【问题标题】:Invalid Label error in JSONPJSONP 中的无效标签错误
【发布时间】:2011-02-09 00:50:57
【问题描述】:

我的 json 网址是:

http://app.websitename.in/getToken

上面的网址返回我以下 JSON :

 { token: "2cd3e37b-5d61-4070-96d5-3dfce0d0acd9%a00a5e34-b017-4899-8171-299781c48c72" }

编辑:改为

 { "token": "2cd3e37b-5d61-4070-96d5-3dfce0d0acd9%a00a5e34-b017-4899-8171-299781c48c72" }

在调用以下代码时,我(仍然)收到 Invalid Label 错误

我的代码是:

 $.getJSON("http://app.websitename.in/getToken?callback=?", 
function(data) {
alert("success");
    alert("Symbol: " + data.token);
});

请帮帮我

谢谢

【问题讨论】:

    标签: javascript jquery ajax json cross-domain


    【解决方案1】:

    属性名称必须用双引号括起来才能成为有效的 JSON,例如:

    { token: "2cd3e37b-5d61-4070-96d5-3dfce0d0acd9%a00a5e34-b017-4899-8171-299781c48c72" }
    

    必须

    { "token": "2cd3e37b-5d61-4070-96d5-3dfce0d0acd9%a00a5e34-b017-4899-8171-299781c48c72" }
    

    (请注意,“token”现在用双引号括起来。)

    JSON site 的详细信息。 JSONlint 也很有帮助。

    一些 JSON 解析器很松懈,让您不必在属性名称周围加上双引号(尤其是那些伪装成 JavaScript 解析器的),但从技术上讲,这是必需的。

    【讨论】:

    • 不做跨域 JSON-P 将数据视为 JavaScript 片段(这是有效的)而不是 JSON?
    • @David:你可能是对的。当然,如果 URL 返回的是原始数据而不是有效的 JSON-P 响应,那么您的答案就是正确的。
    • @Tushar:根据您的编辑,现在是正确的。如果您仍然遇到问题,并且根据您更新的错误消息,我确定@David 是对的:您实际上是从 URL 返回该文本,这只是纯 JSON,而不是有效的 JSON- P 响应。 JSON-P 要求您将 JSON 包装在对函数的调用中,详细信息:en.wikipedia.org/wiki/JSONP#JSONP
    • 如何返回 JSON-P 而不是 JSON? ....请告诉我程序。我在服务器端使用 Java
    • @Tushar:我刚才给你的链接有一个完整的例子。
    【解决方案2】:

    我的 json 网址是: http://app.websitename.in/getToken

    不,它不是(或者,如果是,那么它坏了)。

    curl: (6) 无法解析主机 'app.websitename.in'

    如果我们假设您在说“websitename.in”时指的是“example.com”(使用示例域作为示例,这就是它们的用途),那么:

    如果它以这种形式返回该数据,则它无法将其包装在回调中,因此它是 JSON 而不是 JSON-P。您需要 JSON-P 才能跨域操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 2013-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      • 2013-10-01
      相关资源
      最近更新 更多