将对象返回到ajax Web Service方法

时间:2011-11-10 12:29:04

标签: 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 () { 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'); }
});

现在,这个工作正常,我可以摆脱这个解决方案,但生活很艰难,我们不想要更难!如果有办法直接传递物体,我很乐意听到它;)

2 个答案:

答案 0 :(得分:1)

原因可能是:

data: person

实际发送此信息:

FirstName=Foo&LastName=Bar

因为jQuery将该对象分解为POST友好的键/值集。你的第二个版本工作的原因是因为它实际上发送了一个真正的JSON字符串。如果你这样做:

data: JSON.stringify(person)

那可能会奏效。

答案 1 :(得分:0)

var json ='{person:'+ JSON.stringify(person)+'}';

完成了这项工作:)