使用jQuery,从跨域url访问json,其中json可能形成不佳

mar*_*ark 5 javascript jquery json jsonp

我正在使用jQuery的ajax函数来访问跨域url.该网址将返回json.我正处于发现阶段,但我想,因为json值包含几个'"'字符串,json eval会抛出错误并停止执行我的客户端脚本.我得到的错误是"未终止的字符串文字".我知道如果我将返回的json硬编码放在本地div中并删除'"' 字符串(和几个隐藏的特殊字符),我可以成功地获得json到eval.无论是通过解决方法还是通过修改我的代码,我可以做些什么来从URL获取json并将其存储在我的客户端javascript中作为有效的json对象?

我目前的代码.没有定义的函数(success,complete,error,dataFilter)执行:

$(function() {
  $.ajax({
  url: "http://www.codemash.org/rest/sessions.json?format=jsonp&callback=?", 
  dataType: "jsonp",
  success: successFunc,
  complete: completeFunc,
  error: errorFunc,
  dataFilter: dataFilterFunc
});

});

function successFunc() { console.log('successFunc(). enter.'); }
function completeFunc() { console.log('complete(). enter.'); }
function errorFunc() { console.log('errorFunc(). enter.'); }
function dataFilterFunc(data, type) { 
  data.replace(/\W/g, ' ');
  return data; 
}
Run Code Online (Sandbox Code Playgroud)

Tha*_*tos 1

唔。我不懂 jQuery,但我懂 JSON。(我为它编写了一个基于 C++ 的解析器。)我访问了您显示的 url:http://www.codemash.org/rest/sessions.json?format=jsonp&callback=?。Python 的 JSON 解析器接受这一点,并且我的经验是 Python 的 JSON 解析器是正确的。请注意:

{ "blah": "string " More more more" }
Run Code Online (Sandbox Code Playgroud)

...是有效的 JSON。该"部分在 JSON 中没有特殊解释 - 它们只是字符串中的字符。


编辑:仔细观察这一点,我发现非常有趣的是,无论生成什么,都会转义一些正斜杠,但不是全部。“开始”项是“/Date(-XXXXX)/”,这是/Date(-XXXXX)/JSON 中的文本 - / 可以选择转义。但是,在带有“SpeakerURI”和“URI”键的项目中,它们不会被转义。


编辑:通过我的基于 C++ 的解析器运行它。最初它没有接受它,但这个 JSON 实际上暴露了我的解析器中的一个错误。