我无法通过ajax调用将javascript对象返回到web方法,如下所示:
var person = {"FirstName":"Foo","LastName":"Bar"};
$.ajax({
type: "POST",
url: url,
data: person,
contentType: "application/json; charset=utf-8",
dataType: "json",
onSuccess: function () { alert('Success!'); },
onError: function () { alert('Error'); }
});
使用上述方法抛出无效的JSON原语。 我会采用这样的字符串操作:
var person = {"FirstName":"Foo","LastName":"Bar"};
var json = '{person:' + JSON.stringify(person) + '}';
$.ajax({
type: "POST",
url: url,
data: json,
contentType: "application/json; charset=utf-8",
dataType: "json",
onSuccess: function () { alert('Success!'); },
onError: function () { alert('Error'); }
});
现在,这个工作正常,我可以摆脱这个解决方案,但生活很艰难,我们不想要更难!如果有办法直接传递物体,我很乐意听到它;)
答案 0 :(得分:1)
原因可能是:
data: person
实际发送此信息:
FirstName=Foo&LastName=Bar
因为jQuery将该对象分解为POST友好的键/值集。你的第二个版本工作的原因是因为它实际上发送了一个真正的JSON字符串。如果你这样做:
data: JSON.stringify(person)
那可能会奏效。
答案 1 :(得分:0)
var json ='{person:'+ JSON.stringify(person)+'}';
完成了这项工作:)