【问题标题】:Why is this JSONP feed throwing "Unexpected Token" error?为什么这个 JSONP 提要会抛出“Unexpected Token”错误?
【发布时间】:2012-04-23 00:51:03
【问题描述】:

我正在尝试通过 jQuery 获取 this remote JSONP feed

每次尝试时,我都会收到“Uncaught SyntaxError: Unexpected token (”或类似的错误。

我做错了什么还是 JSONP 数据中的某些内容被错误地格式化/转义?

小提琴:http://jsfiddle.net/callmeed/d3tSX/2/

var _event_url = "http://calvaryslo.onthecity.org/plaza/*events*?format=json";
$.ajax({
    type: 'GET',
    url: _event_url,
    dataType: 'jsonp',
    success: function(msg) {
        alert(msg.length);
    }
});​

【问题讨论】:

  • 这个url返回JSON格式的数据,不是JSONP
  • 您是否可以控制该页面上的输出,还是第三方 API?

标签: javascript jquery json jsonp


【解决方案1】:

因为此提要返回 JSON,而不是 javascript 函数调用:

[{Query172031345640518702567_1334079878875({...

但应该是:

Query172031345640518702567_1334079878875({...

我不知道这个服务是否在你的控制之下,你可以改变它,或者你只需​​要在 URL 中添加一些参数(查看手册)。

响应的内容类型也应该是application/javascript,而不是text/json

【讨论】:

  • 是的,确实是这样。我不控制服务,那些确实承认它的结构不正确。谢谢。
【解决方案2】:

如果你使用dataType: 'jsonp',JQuery 会在请求中附加一个callback url 参数。该参数的值必须是服务器返回的回调函数的函数名。正如 Eugene Retunsky 已经提到的那样,它的格式不正确,而且似乎服务器代码省略了函数名的第一个字符,因此 jQuery_674... 变为 Query_674... 将不起作用。

【讨论】:

    猜你喜欢
    • 2015-03-21
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多