Как передать несколько параметров из ajax-вызова в MVC-контроллер
У меня есть контроллер, как показано ниже:
public ActionResult Save(string input, string name) {
//Some code
return PartialView();
}
И мне нужен вызов ajax для этого метода контроллера и передать два аргумента ввода и значение
И мой вызов ajax выглядит следующим образом:
$.ajax({
url: '/Home/Save',
type: 'POST',
async: false,
dataType: 'text',
processData: false,
data: "input=" + JSON.stringify(data) + "&name =" + $("#name").val(),
success: function (data) {
}
});
Я не могу передать значение параметру name.
значение в параметре name становится null.. пожалуйста, помогите мне..
Спасибо заранее
Ответы
Ответ 1
Вы делаете HTTP POST, но пытаетесь передать параметры с синтаксисом строки запроса GET. В POST данные передаются как именованные параметры и не используют синтаксис param=value&foo=bar
. Используя метод jQuery ajax, вы можете создать объект javascript с именованными параметрами, например:
$.ajax({
url: '/Home/SaveChart',
type: 'POST',
async: false,
dataType: 'text',
processData: false,
data: {
input: JSON.stringify(IVRInstant.data),
name: $("#wrkname").val()
},
success: function (data) { }
});
Ответ 2
В дополнение к сообщениям @xdumain, я предпочитаю создавать объект данных перед вызовом ajax, чтобы вы могли его отлаживать.
var dataObject = JSON.stringify({
'input': $('#myInput').val(),
'name': $('#myName').val(),
});
Теперь используйте его в ajax-вызове
$.ajax({
url: "/Home/SaveChart",
type: 'POST',
async: false,
dataType: 'json',
contentType: 'application/json',
data: dataObject,
success: function (data) { },
error: function (xhr) { } )};
Ответ 3
Я сделал это с помощью этого вопроса
jquery get querystring из URL
так что посмотрим, как
мы будем использовать эту функцию
// Read a page GET URL variables and return them as an associative array.
function getUrlVars()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
и теперь просто используйте его в Ajax call
"ajax": {
url: '/Departments/GetAllDepartments/',
type: 'GET',
dataType: 'json',
data: getUrlVars()// here is the tricky part
},
вот и все, но если вы хотите узнать how to use this function
или not send all the query string parameters
назад фактический ответ
Ответ 4
function final_submit1() {
var city = $("#city").val();
var airport = $("#airport").val();
var vehicle = $("#vehicle").val();
if(city && airport){
$.ajax({
type:"POST",
cache:false,
data:{"city": city,"airport": airport},
url:'http://airportLimo/ajax-car-list',
success: function (html) {
console.log(html);
//$('#add').val('data sent');
//$('#msg').html(html);
$('#pprice').html("Price: $"+html);
}
});
}
}
Ответ 5
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "ChnagePassword.aspx/AutocompleteSuggestions",
data: "{'searchstring':'" + request.term + "','st':'Arb'}",
dataType: "json",
success: function (data) {
response($.map(data.d, function (item) {
return { value: item }
}))
},
error: function (result) {
alert("Error");
}
});