Jquery 将对象返回到ajaxweb服务方法
我无法通过ajax调用将javascript对象返回到web方法,如下所示:Jquery 将对象返回到ajaxweb服务方法,jquery,ajax,web-services,Jquery,Ajax,Web Services,我无法通过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 ()
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'); }
});
现在,这很好,我可以用这个解决方案逃脱,但生活很艰难,我们不想更艰难!如果有办法直接通过物体,我很乐意听到;) 原因可能是:
data: person
实际上发送了以下信息:
FirstName=Foo&LastName=Bar
因为jQuery将该对象分解为一个POST友好的键/值集。您使用第二个版本的原因是它实际上发送了一个真正的JSON字符串。如果要这样做:
data: JSON.stringify(person)
这可能会奏效。原因可能是:
data: person
实际上发送了以下信息:
FirstName=Foo&LastName=Bar
因为jQuery将该对象分解为一个POST友好的键/值集。您使用第二个版本的原因是它实际上发送了一个真正的JSON字符串。如果要这样做:
data: JSON.stringify(person)
这可能会奏效。var json='{person:'+json.stringify(person)+'}'
完成任务:)var json='{person:'+json.stringify(person)+'}'
作业是否执行:)您有什么类型的错误?首先,一个示例可以正常工作。@Oyeme:它抛出“无效的JSON原语:FirstName blahh”。。它需要一个Person包装器来重建对象,因此需要进行字符串操作。。它在您的机器上工作??是的,它工作。您已更正JSON格式{“FirstName”:“Foo”,“LastName”:“Bar”};您有什么类型的错误?首先,一个示例可以正常工作。@Oyeme:它抛出“无效的JSON原语:FirstName blahh”。。它需要一个Person包装器来重建对象,因此需要进行字符串操作。。它在您的机器上工作??是的,它工作。您已更正JSON格式{“FirstName”:“Foo”,“LastName”:“Bar”};感谢您指出jQuery将对象分解为键/值集!但是数据:JSON.stringify(person)仍然不起作用。现在它抛出“无法将对象转换为类型‘System.Collections.Generic.IDictionary[System.String.System.object]”,感谢您指出jQuery将对象分解为键/值集!但是数据:JSON.stringify(person)仍然不起作用。它现在抛出“无法将对象转换为类型‘System.Collections.Generic.IDictionary[System.String.System.object]”