如何通过ajax将JSON正确发送到c#[WebMethod]?

时间:2014-04-28 10:33:47

标签: c# jquery ajax json webmethod

我想通过ajax将JSON字符串发送到[WebMethod]。我的JSON值包含双引号(")。在js中,我创建了一个对象,并使用JSON.stringify(my_object)将其转换为JSON。控制台显示格式正确的JSON(双引号用\掩盖),jsonlint.com确认它。

但问题出现在[WebMethod]中。经过数小时的调试后,我发现它忽略了蒙版",并将它们视为正常"。所以我正确的JSON格式的字符串变得不是JSON格式的字符串。

有没有办法解决这个问题?更改我的输入字符串不是一个选项(我不能摆脱")。

这里有一些代码:

ajax请求:

$.ajax({
    type: 'POST',
    url: 'Test_Page.aspx/Test',
    data: "{json: '" + JSON.stringify(json_string) + "'}",
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function (msg) {},
    error: function (msg) {}
});

网络方法:

[WebMethod]
public static string Test(string json) {
    return Newtonsoft.Json.JsonConvert.SerializeObject(Other_Function(json));
}

1 个答案:

答案 0 :(得分:2)

试试这个:

$.ajax({
    type: 'POST',
    url: 'Test_Page.aspx/Test',
    data: JSON.stringify({json: json_string}),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function (msg) {},
    error: function (msg) {}
});