当前位置: 首页 > 面试题库 >

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

堵泽宇
2023-03-14
问题内容

我正在尝试使用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,没有问题,因此查询不是问题。


问题答案:

您不能在标准浏览器安全设置下使用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



 类似资料:
  • Django 1.10。 在DetailView中,我想通过ajax更新模型对象。嗯,模型对象被更新了。但是ajax成功函数无法从post方法中获取数据。我在失败函数中发生。 换句话说,在UpdateView中的Django中,我可以在form_valid的断点处停止,控制它返回一个带有代码200的Http响应。稍后,如果我用详细信息刷新页面,我可以看到模型对象已经改变。 但在Chrome开发工具

  • 问题内容: 我试图使用ES6 Promise通过jQuery发出发布请求: 我有一个功能: 我这样称呼它: 我的服务器正在返回预期的响应,请求主体为JSON格式,但我的控制台输出为: 好:未定义 为什么我没有得到返回的数据? 感谢任何人/所有人的帮助。 -更新编辑- 我已将我的js减少为: 我仍然未定义为输出。如果在“网络”选项卡中打开请求,则可以看到带有正确数据的响应对象。发出了请求,我的服务器

  • 问题内容: 我正在尝试找到一种将jQuery自动完成与回调源结合使用的方法,该回调源通过ajax json对象列表从服务器获取数据。 有人可以给些指示吗? 我用谷歌搜索,但找不到完整的解决方案。 问题答案: 带有源代码的自动完成文档中的完美示例。 jQuery HTML

  • 问题内容: 我正在寻找创建一个通过ajax更新的仪表盘仪表。下面是我的代码。我有ajax代码,但不确定如何更新量规。有什么建议? 阿贾克斯代码… foreach($ obj-> sensor as $ unit){if($ unit-> label ==“ Temp”){echo $ unit-> tempf。“ F”; }} 问题答案: 您也可以使用相同的代码进行更新。您需要创建一个新的数据表实

  • 问题内容: 我无法使用jquery的ajax功能成功发布。 运行页面的URL为,目标(Web服务)的URL为。没有端口是不一样的,它们分别是9999和8080。 下面是请求和jquery ajax代码。 请求: jQuery ajax代码: 问题答案: 这是跨域ajax调用的问题。基本上(至少在Firefox中),出于安全原因,POST请求会转换为OPTIONS请求。我昨晚碰到了同样 _的_事情,

  • 问题内容: 我有以下JS 和以下控制器代码: addarticle()javascript ajax可以运行并将vars发送到服务器并进入db,但是,javascript然后将运行错误函数而不是成功函数。http响应代码是200,我以为它将运行Success函数。有什么建议? 问题答案: 您需要从控制器返回json,因为这是jQuery期望的。您可以返回即 或者,您可以将html设置为数据类型(也