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)
唔。我不懂 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 实际上暴露了我的解析器中的一个错误。