Я знаю, что есть еще темы об этом, но они не помогают мне, и я схожу с ума здесь!
Я хочу передать некоторые параметры в веб-метод с использованием jQuery Ajax.
var paramList = '';
for(i = 0; i < IDList.length; i++){
if (paramList.length > 0) paramList += ',';
paramList += '"' + 'id' + '":"' + IDList[i].value + '"';
}
paramList = '{' + paramList + '}';
var jsonParams = JSON.stringify(paramList);
$.ajax({
type: "POST",
url: "editactivity.aspx/UpdateSequenceNumber",
data: jsonParams,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
}
});
При вызове ajax, если я помещаю данные в paramList, я получаю сообщение об ошибке: «Недопустимый вызов веб-службы, отсутствует значение параметра: \ u0027a \ u0027».
Если я помещаю данные в jsonParams, я получаю сообщение об ошибке:
"Невозможно преобразовать объект типа \ u0027System.String \ u0027 в тип
\ U0027System.Collections.Generic.IDictionary`2 [System.String, System.Object] \ u0027"
Если я напишу paramList
, он будет в правильном формате JSON, например {"id":"140", "id":"138"}
Если я выписываю jsonParams
, это в неправильном формате, таком как "{\"id\":\"140\",\"id\":\"138\"}"
Веб-метод: (он пока не так уж много делает ..)
[System.Web.Services.WebMethod]
public static string UpdateSequenceNumber(string a, string b)
{
return a+b;
}
Что я делаю не так? Кажется, не могу понять эту вещь JSON правильно.
UPDATE:
После некоторой помощи из первого ответа я теперь отправляю {"id":["138","140"]}
в запросе AJAX.
Веб-метод теперь принимает вместо этого строку с именем id
.
[System.Web.Services.WebMethod]
public static string UpdateSequenceNumber(string id)
{
return id;
}
Теперь я получаю новую ошибку:
"Type \ u0027System.Array \ u0027 не поддерживается для десериализации
массив. "