我需要帮助通过POST发送JSON并获得响应

时间:2011-04-25 21:16:30

标签: javascript json post

我需要通过post发送一个json对象,我无法让它工作。我有它,所以它成功返回,但响应是空的,我无法弄清楚为什么我尝试过的是

new Ajax.Request("http://twittersentiment.appspot.com/api/bulkClassifyJsonRequests", {
method: "post",
postBody:JSONstring,
onSuccess: function(transport){
var response = transport.responseText;
alert("Success@ \n" + transport.responseText + "no response");
},
onFailure: function(){alert("try again")}
});

var http = new XMLHttpRequest();
http.open("POST","http://twittersentiment.appspot.com/api/bulkClassifyJsonRequests",true);
http.onreadystatechange = function() {
if(http.readyState == 4)
{
    if(http.status == 200)
    {
        document.write(http.response.data);
}
else
{
    alert(http.statusText);
}
} 
};
http.send(JSONstring);

2 个答案:

答案 0 :(得分:3)

问题是您尝试发送跨域请求(它违反了same origin policy)。这是一个安全问题,浏览器不允许这样做。如果twittersentiment.appspot.com提供JSONP选项,则可以使用该选项。否则,您将需要通过您的网站或类似的想法来研究代理。

修改
注意:这仅适用于使用AJAX。此外,在查看他们的api docs后,他们似乎确实支持JSONP的“分类服务”。也许您可以将它与“批量分类服务(JSON)”一起使用?

答案 1 :(得分:0)

Same Origin Policy阻止了此次通话。您可以在其间安装代理服务器以进行这些调用,并将输出返回到您的AJAX脚本。有关详细信息,请参阅Why You Need a Proxy