小编典典

带有JQuery的Ajax:200可以,但不能“成功”

ajax

我正在尝试使用AJAX将查询发送到Google图书并将结果显示在我的网站上。我正在使用JQuery发送请求并处理响应,如下所示:

var query = [formatted input from a form];
var URL = "http://books.google.com/books/feeds/volumes?q="+query+"&start-index=1&max-results=5";

$.ajax({
    type: "GET",
    url: URL,
    dataType: "xml",
    success: function(data, status){
        alert(status);
    }
});

当前,如果收到响应,我只是具有警告“成功”的脚本。如果我使用脚本将查询发送到本地页面进行测试,则效果很好。但是,当我按照开发人员API页面上的指示将网址设置为上面列出的Google网址时,我再也看不到该警报。根据Firebug的说法,我会收到应有的响应,并且状态为200
ok,但这并没有达到“成功”的道路。有人知道为什么吗?

编辑:我应该补充一点,如果我直接在URL 后面加上一些随机q
http://books.google.com等,它将显示提要XML,没有问题,因此查询不是问题。


阅读 255

收藏
2020-07-26

共1个答案

小编典典

您不能在标准浏览器安全设置下使用XMLHttpRequest进行跨域请求。一种可能的解决方案是编写一个本地代理功能(假设您可以创建服务器端代码),该功能将查询转发到外部站点,然后返回响应。

编辑 :看起来Google也提供了JavaScript API。我认为它们的制作方式避免了跨域XHR问题。

http://code.google.com/apis/books/docs/js/devguide.html#execute

编辑 :不建议使用书籍的JavaScript API。虽然不再实用,但您可以通过Wayback
Machine存档查看原始的参考文档文本:http
://web.archive.org/web/20120414070427/http: //code.google.com/apis/books/docs
/js/devguide.html#execute

2020-07-26