【问题标题】:Simple jQuery AJAX request not working in Chrome (with error message)简单的 jQuery AJAX 请求在 Chrome 中不起作用(带有错误消息)
【发布时间】:2013-07-10 19:04:33
【问题描述】:

这是适用于 Safari 的 AJAX 方法,但不适用于 Chrome。错误信息如下。

$(document).ready(function(){
  $('.infobutton').click(function(){
    $.ajax({
      url: 'http://apps.nlm.nih.gov/medlineplus/services/mpconnect_service.cfm',
      data: {
        'mainSearchCriteria.v.cs': $(this).attr('data-code-system'),
        'mainSearchCriteria.v.c':  $(this).attr('data-code')
      },
      dataType: 'xml',
      async: false,
      method: 'GET',
      success: function(data){
        console.log('success');
        console.log(data);
      },
      done: function(data){
        console.log('done');
        console.log(data);
      },
      error: function(data){
        console.log('error');
        console.log(data.error());
      }
    });
  });
});

控制台输出在error 回调中给出statusText,如下所示:"Error: NetworkError: DOM Exception 19"This link 谈到了 DOM Exception 19,但这只是说 NETWORK ERROR。没有帮助。

我从其他研究中了解到 Chrome 存在安全、XSS 等问题。

我已经尝试了this SO 帖子以及this one 中的所有建议。没有运气。

使用该查询字符串直接访问 URL 是可行的。可以here查看。

另请注意,这不是应用程序的一部分。 html 实际上只是<button class="infobutton">Click Me</button>。这只是让 AJAX 工作的概念证明。

更新 我还可以确认我在本地(使用file:/// 协议)和远程(在开发服务器上工作)都遇到了同样的错误。

【问题讨论】:

  • 该错误是否仅在从您的系统 (file:///...) 本地启动页面时发生,仅在线或两者兼而有之?
  • 我只在本地和 JSFiddle 上尝试过,结果相同。

标签: jquery ajax google-chrome


【解决方案1】:

您需要设置crossDomain: true,并在您的域上设置位置重定向以指向 nih.gov URL。

绕过限制的一种方法是在策略允许的域上启动请求。换句话说,它必须与发出请求的 JavaScript 在同一个域中。然后,您的页面可以将请求重定向到另一个域。

本地页面示例

<?php
// http://yourdomain.com/some/url/redirect.php
header("Location: http://apps.nlm.nih.gov/medlineplus/services/mpconnect_service.cfm");
?>

然后,将 JavaScript 中的 URL 替换为 http://yourdomain.com/some/url/redirect.php。效果是规避了您遇到的问题。

【讨论】:

  • 感谢您的回答。您能否澄清“在您的域上设置位置重定向”?
  • 抱歉回复晚了。我将编辑位置重定向的详细信息。
【解决方案2】:
  1. 在您的错误处理中使用 console.log(data.status)
  2. 检查您的请求 URL - 它返回 404(未找到)

您是否尝试过 Fiddler2 - 伟大的调试工具

【讨论】:

  • 我不确定您是如何看到请求 URL 返回 404。为我返回 200。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-13
  • 1970-01-01
  • 2019-08-01
  • 1970-01-01
相关资源
最近更新 更多