Я пытался заставить это работать слишком долго и думал, что могу попросить о помощи здесь. Я пытаюсь передать объект javascript на сервер, а затем обратно на клиентскую сторону. Как бы то ни было, при каждой обратной передаче я хочу обновить значение объектного кода позади или на стороне клиента в зависимости от определенных условий. Я могу использовать скрытое поле здесь, но я пытаюсь изучить ajax так. Я объявила глобальную переменную клиентскую сторону, называемую sortList, которая хранит информацию о том, какая задача хранится в каком слоте. Так его, как:Преобразование в метод Json и метод вызова
var sortList = {};
sortList[tid] = sid;
Далее я написал веб-метод:
[WebMethod]
public static string storeList(DragList dict)
{
DragList dl = dict;
int i = 0;
return "success";
}
public class DragList
{
public string taskName { get; set; }
public string slotName { get; set; }
}
и на стороне клиента, я звоню его помощью:
console.log(JSON.stringify(sortList));
$.ajax({
type: "POST",
url: "Jobs.aspx/storeList",
data: JSON.stringify({dict: sortList}),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
}});
}
Моя проблема заключается в WebMethod, объект dictDirect объекта всегда имеет значение null, хотя в запросе dict является объектом json со значением в нем.
Я уже давно застрял на этом и почти планировал перейти в скрытое поле, чтобы выполнить задачу. Но было бы очень полезно, если бы кто-то мог указать мне в правильном направлении.
Изменения, внесенные мной после: Я использую tid как ключ для поиска sid в массиве объектов, поэтому, если я разбиваю его на части, я потеряю сопряжение значений ключей. Вместо этого, я создал новую строку в нужном формате JSON:
jsonStr = "{";
var w = 0;
for (var key in sortList) {
var obj = sortList[key];
jsonStr += '"key":{"taskName":"' + key + '", "slotName":"' + obj + '"},';
w++;
}
jsonStr = jsonStr.substring(0, jsonStr.length - 1);
jsonStr += '}';
console.log(jsonStr);
$.ajax({
type: "POST",
url: "Jobs.aspx/storeList",
data: {dict: jsonStr},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
}});
}
Но теперь, я получаю следующее сообщение об ошибке:
Я не могу сломать i t на части, так как тогда я потеряю свое ключевое значение, сопрягая задачи с слотами. Вместо этого я исправил свою строку json, но потом я получил ошибку. См. Редактирование в исходном сообщении. – Ratan
@ Ratan да, конечно, я не знаю, что там, поэтому сделал предположение, но моя точка была ясна ... – PSL
@ Ratan вы можете вставить свою конкатенированную строку JSON. Возможно, там что-то не так. Попробуйте использовать нотацию объекта вместо конкатенации. Также, если это строка, попробуйте '{dict: JSON.parse (jsonStr)}' – PSL