Метод Jquery $.post

#jquery #asp.net-mvc-2

#jquery #asp.net-mvc-2

Вопрос:

Привет, у меня есть такой метод:

  [AcceptVerbs(HttpVerbs.Post)]
        public JsonResult GetPayeesJson(long id)
        {
             ///TODO:
        }
  

Прямо сейчас он вызывается из функции Javascript, подобной этой, и работает хорошо:

 $.post("/Payee/GetPayeesJson/"   payerData.Id, null, function (data) {
               fillPayeeCache(data, payerData.Id);
               fillPayeeSelect(payeeCache[payerData.Id]);
            }, "json");
  

В дополнение к идентификатору, который передается методу GetPayeesJson(long id) , я также хочу передать строку, содержащую имя формы. Итак, в основном я хочу сделать post-вызов метода, подобного этому:

         [AcceptVerbs(HttpVerbs.Post)]
        public JsonResult GetPayeesJson(long id, string formName)
        {
           //TODO:
        }
  

Как я могу это сделать. Заранее спасибо!

Ответ №1:

Пример: запрос test.php страницу и отправить некоторые дополнительные данные (по-прежнему игнорируя возвращаемые результаты).

 $.post("test.php", { name: "John", time: "2pm" } );
  

Источник: http://api.jquery.com/jQuery.post /

Ответ №2:

Вероятно, проще всего просто добавить formName в качестве переменной строки запроса к URL-адресу в вызове $.post. (т.е. Добавьте «?formName= что угодно» к вашему URL-адресу) Вы также можете опубликовать его как переменную формы с именем formName .

Это поведение переопределяется, но по умолчанию вы можете использовать переменную querystring или form с соответствующим именем.

e: оффтопический, но вы также должны иметь возможность просто использовать [HttpPost] в качестве краткой формы вашего атрибута в методе GetPayeesJson .

e2: больше конкретики … добавление в качестве строки запроса -> "/Payee/GetPayeesJson/" payerData.Id "?formName=whateverYourFormIsNamed"

добавление в качестве переменной формы -> см. Ответ Toast

Оба они позволят вам использовать указанный вами синтаксис для действия вашего контроллера.

Комментарии:

1. Спасибо за ваш ответ. Не могли бы вы быть более конкретными. Я использую asp.net Фреймворк MVC, и этот вызов передается классу контроллера.

Ответ №3:

Вам необходимо передать эту информацию как часть отправленного data

итак, для вашего конкретного примера

 $.post("/Payee/GetPayeesJson/"   payerData.Id, 
       {'formName':'value to be passed here'}, 
       function (data) {
               fillPayeeCache(data, payerData.Id);
               fillPayeeSelect(payeeCache[payerData.Id]);
            }, "json");
  

должен делать то, что вам нужно..

Ответ №4:

Как насчет этого?

 $.ajax({
    url: 'example.php',
    dataType: 'json',
    type: 'POST',
    data:  { 
        formName: 'formName' 
    },
    success: function (response) {

    },
    error: function(response, data) {
      alert("Oops... Looks like we're having some difficulties."); 
   }         
});
  

Комментарии:

1. По умолчанию используется значение «post», но я думаю, было бы полезно сделать его явным с type: 'POST' помощью here, поскольку этого требует метод действия OP.