简单的jQuery AJAX请求无法在Chrome中运行(带有错误消息)

时间:2013-07-10 19:04:34

标签: jquery ajax google-chrome

以下是适用于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());
      }
    });
  });
});

控制台输出提供statusText回调中的error,如下所示:"Error: NetworkError: DOM Exception 19"This link讨论了DOM异常19,但只是说NETWORK ERROR。没用。

我从其他研究中了解到Chrome已经知道安全性,XSS等问题。

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

直接使用该查询字符串的URL工作。您可以查看here

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

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

2 个答案:

答案 0 :(得分:1)

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

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

本地网页示例

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

然后,用http://yourdomain.com/some/url/redirect.php替换JavaScript中的网址。这种影响是规避您正在经历的问题。

答案 1 :(得分:0)

  1. 在错误处理中使用console.log(data.status)
  2. 检查您的请求网址 - 它返回404(未找到)
  3. 您是否尝试过Fiddler2 -great工具进行调试