javascript - 使用 jQuery,从 json 可能格式不正确的跨域 url 访问 json

标签 javascript jquery json jsonp

我正在使用 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*/});

虽然那个you post返回plain valid JSON,但它不能作为 JSONP 响应处理。

关于javascript - 使用 jQuery,从 json 可能格式不正确的跨域 url 访问 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1811505/

相关文章:

javascript - 如何让代码更短?

Android View ID 作为字符串

javascript - 如何循环json字符串

javascript - 为什么当数组元素相同时 Splice 只删除最后一个元素

javascript - HTTP GET 请求( Node )返回 501

javascript - 使用 JavaScript 获取特定日期格式

javascript - 防止创建特定的 HTML 元素

javascript - 为什么javascript将变量视为字符串?

javascript - jQuery:与 removeData() 在不适当的时间执行冲突

arrays - 如何在Scala View 页面中迭代JsArray(值映射不是play.api.libs.json.JsArray的成员)