尝试使用$ .ajax获取JSON时,为什么会出现“SyntaxError:invalid label”

时间:2013-08-11 03:50:15

标签: jquery ajax json

我正在尝试使用Viralheat's API来使用jQuery进行情感分析。

1。当我在浏览器的地址栏中输入此内容时,就可以了:

https://app.viralheat.com/social/api/sentiment?api_key=1234&text=Schindler%27s%20List

它显示:

{"status":403,"error":"API Key not registered"}

2。使用这些代码行,网页显示错误,我想它会遇到相同的原始政策:

    $.ajax({
        type: 'get',
        url: "https://app.viralheat.com/social/api/sentiment?api_key=1234&text=Schindler's List",
        success: function(data){alert(data);},
        error: function(){alert("error");}
    });

第3。当我在网址中添加callback=?,并使用firebug添加dataType: 'json',时,我可以在方案1 {"status":403,"error":"API Key not registered"}中看到相同的结果,但网页仍显示错误,并发生错误: SyntaxError:无效标签

    $.ajax({
        type: 'get',
        dataType: 'json',
        url: "https://app.viralheat.com/social/api/sentiment?api_key=1234&text=Schindler's List&callback=?",
        success: function(data){alert(data);},
        error: function(){alert("error");}
    });

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

仅仅将callback=whatever添加到JSON API请求中不会神奇地将结果转换为JSONP,除非该服务实际上支持这样的JSONP选项。

您正在使用的Viralheat API似乎不支持JSONP。 The documentation没有提及任何类型的JSONP选项。它提到的唯一选项是API_KEYTEXT参数。

正如您所发现的,添加callback=anything不会将输出格式从JSON更改为JSONP。如果您尝试your API call with a callback=foobar parameter added,它仍会生成普通的JSON:

{
    "status": 403,
    "error": "API Key not registered"
}

如果此服务不支持JSONP或CORS,则必须使用服务器上的代码在客户端浏览器中访问服务而不是JavaScript。