0

我有一个由 JavaScript 调用以从数据库中获取数据的 WebMethod。数据库对此是禁止的,所以我不能在那里改变任何东西。我想在 JavaScript 中做到这一点。

当它到达 JavaScript 时,字符串看起来像这样:

"[{"id":"0", "value":"Avery Bradley"},{"id":"31", "value":"Jason "Jet" Terry"}]"

我尝试替换('\"', '\\\"')以添加转义字符。我让它以这种方式在 .NET 端工作Replace("\"", "\\\"")。但是,这是一个将使用它的自包含控件,并且应该在那里进行验证。

我究竟做错了什么?

函数 GetDataCallBack(childId, senderParam, senderValue, callback) { var values;

$.ajax({
    type: "POST",
    async: false,
    url: callback,
    data: "{'id': '" + childId + "', 'parameter': '" + senderParam + "', 'value': '" + senderValue + "'}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (json) {
        values = json.d;
    }
});
return values;

}

4

2 回答 2

1

问题出在服务器端。它提供无效的 JSON。具体来说,这在数组中的最后一个对象内:

"value":"Jason "Jet" Terry"

周围的那些引号"Jet"需要转义。服务器给你无效的 JSON。

您可以尝试纠正损坏的 JSON,但它会很笨拙并且可能不完美。

需要修复服务器端,以便它提供有效的 JSON。

于 2012-07-27T17:45:56.620 回答
0

我认为你在这里做错了什么。JSON 文件应该只是 JSON,没有其他内容。它不应该是 JSON 的字符串表示,它被字符串解析为字符串并从那里解析为对象 - 只需将文件/流/任何内容视为字符串。

如果您需要将 JSON 嵌入到某些标记(XML、HTML)中,请在 JSON 字符串上使用该语言的指定转义方法。

如果您需要将 JSON 嵌入到某个程序文件中,请尝试使用编码对象的匹配文字表示(例如,在 Javascript 中非常简单)。如果您使用的语言没有很好的表示,请将其存储到一个额外的文本文件中并从那里读取。

于 2012-07-27T17:41:31.983 回答