我正在尝试使用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");}
});
我该如何解决这个问题?
答案 0 :(得分:4)
仅仅将callback=whatever
添加到JSON API请求中不会神奇地将结果转换为JSONP,除非该服务实际上支持这样的JSONP选项。
您正在使用的Viralheat API似乎不支持JSONP。 The documentation没有提及任何类型的JSONP选项。它提到的唯一选项是API_KEY
和TEXT
参数。
正如您所发现的,添加callback=anything
不会将输出格式从JSON更改为JSONP。如果您尝试your API call with a callback=foobar
parameter added,它仍会生成普通的JSON:
{
"status": 403,
"error": "API Key not registered"
}
如果此服务不支持JSONP或CORS,则必须使用服务器上的代码在客户端浏览器中访问服务而不是JavaScript。