我有一个由JavaScript调用的WebMethod,用于从数据库中获取数据。数据库没有限制,所以我无法改变任何东西。我想在JavaScript中这样做。
当它到达JavaScript时,字符串看起来像这样:
"[{"id":"0", "value":"Avery Bradley"},{"id":"31", "value":"Jason "Jet" Terry"}]"
我已尝试替换('\"', '\\\"')
以添加转义字符。我通过Replace("\"", "\\\"")
方式在.NET端工作。但是,这是一个自包含的控件,它将使用它并且验证应该在那里。
我做错了什么?
function GetDataCallBack(childId,senderParam,senderValue,callback){ var值;
$.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;
}
答案 0 :(得分:1)
问题出在服务器端。它提供无效的JSON。具体来说,这是在数组中的最后一个对象内部:
"value":"Jason "Jet" Terry"
"Jet"
周围的引号需要转义。服务器为您提供无效的JSON。
您可以尝试纠正损坏的JSON,但它会很糟糕并且可能不完美。
需要修复服务器端,以便它提供有效的JSON。
答案 1 :(得分:0)
我认为你在这里做错了什么。 JSON文件应该只是JSON而不是其他内容。它不应该是JSON的字符串表示形式,它被字符串解析为字符串,并从那里解析为Object - 只需将文件/流/其他内容视为字符串。
如果需要将JSON嵌入到某个标记(XML,HTML)中,请在JSON字符串上使用该语言的指定转义方法。
如果需要将JSON嵌入到某个程序文件中,请尝试使用编码对象的匹配文字表示(例如,在Javascript中非常容易)。如果您使用的语言没有良好的表现形式,请将其存储在额外的文本文件中并从那里读取。