2011-04-25 108 views
0

我需要通过发送发送json对象,我无法让它工作。我有它,以便它成功返回,但响应是空的,我想不通为什么事情我已经尝试是我需要帮助通过POST发送JSON并获得响应

new Ajax.Request("http://twittersentiment.appspot.com/api/bulkClassifyJsonRequests", { 
method: "post", 
postBody:JSONstring, 
onSuccess: function(transport){ 
var response = transport.responseText; 
alert("[email protected] \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); 

回答

0

Same Origin Policy正在阻止该呼叫的发生。您可以在两者之间安装代理服务器以进行这些调用,并将输出返回到您的AJAX脚本。有关更多详细信息,请参阅Why You Need a Proxy

+1

这是什么?你只是发布了与我相同的答案,甚至链接到同一篇文章。 – 2011-04-26 14:28:17

+0

34分钟复制面食 – 2011-04-26 17:59:33

+0

@Drackir - 有一项服务被称为维基百科。还有另一项服务称为Google。 Google用于搜索所有内容。维基百科就像一切的信息存储。当您在Google中搜索某些内容时,大多数时候显示的第一个链接都来自Wikipedia。因此,相同的链接。顺便说一下,你的一个upvotes是我的。别客气! – Anurag 2011-04-26 18:07:56

3

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

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