[英]Passing js object as json to jquery?
我有以下但它没有工作,我在stackoverflow上的某处读到它的工作方式,但我似乎无法让它工作..它的错误......我做错了什么?
如果我确实传递了这样的数据 - 它有效 - 所以我知道我的服务正在运行
//THIS WORKS
data: "{one : 'test',two: 'test2' }"
// BUT SETTING UP OBJECT doesn't work..
var saveData = {};
saveData.one = "test";
saveData.two = "tes2";
$.ajax({
type: "POST",
url: "MyService.aspx/GetDate",
data: saveData,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert(msg.d);
},
error: function(msg) {
alert('error');
}
});
我相信代码将在您的对象上调用.value或.toString()然后传递线。 你想传递JSON。
所以,包括json javascript库
然后通过......
var saveData = {};
saveData.one = "test";
saveData.two = "tes2";
$.ajax({
type: "POST",
url: "MyService.aspx/GetDate",
data: JSON.stringify(saveData), // NOTE CHANGE HERE
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert(msg.d);
},
error: function(msg) {
alert('error');
}
});
根据这篇博客文章 ,当你尝试传递对象时它不起作用的原因是jQuery试图序列化它。 从帖子:
jQuery不会将该JSON对象传递给Web服务,而是自动序列化并将其发送为:
fname=dave&lname=ward
对此,服务器将响应:
Invalid JSON primitive: fname.
这显然不是我们想要发生的事情。 解决方案是确保您为数据参数传递jQuery字符串[...]
这是你在有效的例子中做的。
我的建议是使用jquery-json插件 ,然后你可以在你的代码中执行此操作:
...
data: $.toJSON(saveData),
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.