我正在使用 jQuery 的 ajax 函数来访问跨域 url。该 url 将返回 json。我正处于发现阶段,但我认为,因为 json 值包含几个“"”字符串,所以 json eval 会抛出错误并停止执行我的客户端脚本。我得到的错误是“未终止的字符串文字”。我知道如果我通过将返回的 json 放在本地 div 中并删除 '"' 来对返回的 json 进行硬编码字符串(和几个隐藏的特殊字符),我可以让 json 成功评估。 无论是通过解决方法,还是通过更正我的代码,我该怎么做才能从 url 获取 json 并将其作为有效的 json 对象存储在我的客户端 javascript 中?
我当前的代码。没有定义的函数(成功、完成、错误、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;
}
最佳答案
问题出在 JSONP 服务上,它完全忽略了 callback
参数。
A JSONP response 只是一个使用 callback
get 参数作为函数名称的函数调用:
如果你看一些 JSONP 服务的响应,它应该是这样的:
http://somesite.com/jsonp?callback= 我的回调
会返回:
myCallback({/*json*/});
关于javascript - 使用 jQuery,从 json 可能格式不正确的跨域 url 访问 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1811505/