【问题标题】:JQuery Ajax won't display results in ChromeJQuery Ajax 不会在 Chrome 中显示结果
【发布时间】:2012-02-25 16:13:19
【问题描述】:

这适用于 IE 8,但不适用于 Chrome 16.0.912.77。有什么想法吗?

<html> 
<head> 
<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script> 
$(document).ready(function()
{
    $.ajax({
        type: "GET",
        url: "test.xml",
        dataType: "xml",
        success: parseXml
    });
});

function parseXml(xml)
{
    $(xml).find("test").each(function()
    {
        $("#test").append("<tr><td>" + $(this).find("name").text()+"</td><td>" + $(this).find("phone").text()+"</td></tr>");
        $('#test').trigger('create');
    });
}

</script> 
</head> 
<body> 

<table id="test" border="1"></table>
</body> 
</html>

【问题讨论】:

  • 您是否错过了开幕); 的结束$(document).ready(
  • 不,很确定它都在那里。
  • 刚刚在 FireFox 中测试过,它在那里工作。所以它必须是一个Chrome问题。 Chrome 有什么我缺少的吗?
  • 尝试在 Chrome 中打开开发者控制台,看看是否有任何错误。查看 -> 开发人员 -> JavaScript 控制台。
  • 确定:XMLHttpRequest 无法加载 file:///C:/test/test.xml。 Access-Control-Allow-Origin 不允许 Origin null。这是什么意思??

标签: jquery html xml ajax


【解决方案1】:

如果您看到错误“Access-Control-Allow-Origin 不允许使用 Origin null”,则说明您遇到了跨域资源共享问题。

http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing

基本上,使用传统的 AJAX,您无法访问来自其他来源(域)的文件。因此,site1.com 无法使用常规 AJAX 访问来自 site2.com 的内容。有一些方法可以解决这个问题(JSONP 是最常见的)。

您遇到这种情况是因为,由于您在本地计算机上运行脚本,因此没有列出来源(因此错误中出现“Origin null”),并且浏览器不会让您加载文件。

如果您想继续在本地开发,您可以使用标志启动 Chrome 以禁用此本地安全性。在此处了解更多信息:http://code.google.com/p/chromium/issues/detail?id=40787

或者,您可以将代码移动到托管服务器,它应该可以在那里正常工作。

【讨论】:

  • 有趣。即使 index.html 与 test.xml 位于同一目录中,这也是一个问题?并感谢您提供信息。
  • 是的。目录无关紧要——它与服务器有关。
  • 我的网站现在已经在服务器上了。现在可以在除 IE 之外的所有设备上使用。有什么想法吗?
  • 如果你有一台 Windows Vista+ 计算机,IE 9 里面有同样类型的 JavaScript 控制台——而且,它有它的旧版本(6、7 和 8,我相信.) 所以,在那里尝试同样的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-28
  • 1970-01-01
  • 2016-04-10
  • 1970-01-01
  • 2012-08-05
  • 1970-01-01
相关资源
最近更新 更多