使用jQuery,Ajax和JSON提交单引号

Odd*_*Odd 5 asp.net ajax jquery web-services

我环顾四周,我正试图找到一个优雅的解决方案,我还没找到一个.我在.NET中有一个ASMX Web服务,我试图调用它需要参数.

我在客户端使用jQuery来调用服务,我的jQuery代码看起来像这样:

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    url: "/Reviews/HotelReview.asmx/SubmitReview",
    data: "{'name': '" + name + "', " +
        "'info': '" info + "'}",
    processData: true,
    beforeSend: function() { startSubmit(); },
    complete: function() { submitComplete(); },
    error: function(xhr) { submitError(xhr); },
    success: function(msg) { submitSuccess(msg.d); }
});
Run Code Online (Sandbox Code Playgroud)

它工作得非常好,除非名称信息包含'字符,单引号.很简单,因为我的JSON定义了字段值的结尾并且是单引号.当这些字段中的任何一个包含单引号时,我得到的只是"内部服务器错误",但是使用Fiddler的进一步检查向我显示了结果(我不打算发布它们),表明单引号问题.

我暂时放置了一些东西来删除客户端上的单引号并将它们放回服务器端,但这远非优雅.有没有更优雅的方法来逃避这些单引号,以便我的代码可以工作?

oll*_*lle 9

规范说在JSON中你只能在键和值周围使用双引号,所以用双引号来试试.我很确定你的错误会得到解决.

您可能希望使用json.js来编码/转义实际值中的特殊字符,这样您就不会遇到包含"例如"的值或来自http://www.json.org/js的stringify方法的问题. HTML.