#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.