2010-06-26 77 views
0

我认为代码是正确的,但我没有在我的第二个提醒中得到任何回应。当我进入第一次提醒中给出的网站时,我收到了我想要的文字。为什么它不起作用?没有AJAX响应文本

<script type="text/javascript"> 

function getimages(q) { 
    bossimagesrequest = new XMLHttpRequest; 
    var requri = "http://boss.yahooapis.com/ysearch/images/v1/"+escape(q)+"?appid=yahoobosskey&filter=true&count=10"; 
    bossimagesrequest.open("GET", requri, true); 
    bossimagesrequest.onreadystatechange = function() { 
     if (bossimagesrequest.readyState === 4) { 
     alert(requri); 
     alert(bossimagesrequest.responseText); 
     } 
    }; 
    bossimagesrequest.send(); 
} 
</script> 

我没有用我的API密钥替换“yahoobosskey”,所以这不是问题。

回答

1

它看起来像碰到了same origin policy。您可能不得不使用相对路径而不是绝对路径。

相关:Empty responseText from XMLHttpRequest

您还可能有兴趣在检查出下面的堆栈溢出社区维基职位:

+0

所以我不能用AJAX使用雅虎BOSS?我认为当雅虎从BOSS阻止其他服务器时会很愚蠢,因为那时你必须做很多事才能绕开这个障碍。我不必为雅虎BOSS使用AJAX吗? – icant 2010-06-26 11:40:26

+0

@ user376919:同源策略阻止任何不源自Web文档的相同域的内容。即使不同的端口号也是不允许的。我没有雅虎BOSS的经验,但您可能想检查是否提供了[JSONP](http://en.wikipedia.org/wiki/JSON#JSONP)服务。否则,您可能想查看我链接到的SO帖子中描述的方法。 – 2010-06-26 11:47:27

+0

...例如,我注意到[雅虎的搜索API](http://developer.yahoo.com/common/json.html#callbackparam)为JSONP提供服务。它被称为使用回调的JSON。 – 2010-06-26 11:49:30