将js对象作为json传递给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库

http://www.json.org/js.html

然后通过……

  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尝试序列化它。 从post:

jQuery不会将该JSON对象传递给Web服务,而是自动序列化并将其发送为:

 fname=dave&lname=ward 

对此,服务器将响应:

 Invalid JSON primitive: fname. 

这显然不是我们想要发生的事情。 解决方案是确保您为数据参数传递jQuery字符串[…]

这是你在有效的例子中做的。

我的建议是使用jquery-json插件 ,然后你可以在你的代码中执行此操作:

 ... data: $.toJSON(saveData), ...