我一直试图让这个工作太久,我想我可能会在这里寻求帮助。我正在尝试将 javascript 对象传递到服务器端,然后返回到客户端。有点像,在每次回发时,我都想根据某些条件更新背后或客户端的目标代码的值。我可以在这里使用 hiddenfield,但我正在尝试学习 ajax。我已经声明了一个名为 sortList 的全局变量客户端,它存储有关哪些任务存储在哪个插槽中的信息。所以它就像:
var sortList = {};
sortList[tid] = sid;
接下来我写了一个web方法:
[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 中,DragList 对象 dict 始终为 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) {
}});
}
但是现在,我收到以下错误: