我有一个jQuery .ajax()调用,在IE 7和8中运行正常。它在FF或Chrome中不起作用。我认为这是一个跨域问题(因为它试图跨域调用)但我的同事说,如果它是一个跨域问题,它将无法在任何浏览器中工作。我对么?跨域问题是否可以在某些浏览器中出现而在其他浏览器中出现?有点新的东西......谢谢!
更新:这是我的代码,使用测试xml(与我尝试显示的属性不匹配,但我只是想了解我的ajax调用有什么问题):
$(document).ready(function () {
$.ajax({
type: "GET",
url: "http://www.w3schools.com/xml/note.xml", //test xml
dataType: "xml",
success: xmlParser,
asynch: true
});
});
function xmlParser(xml) {
$(xml).find("Offer:lt(3)").each(function () {
$("#offers").append('<img src="' + $(this).find("logophotoname").text() + '"/><h1>' + $(this).find("listTitle").text() + '</h1><p>' + $(this).find("keywords").text() + '</p>');
});
}
答案 0 :(得分:1)
你的同事是对的。它不应该在任何浏览器中工作。但是在IE 8中,Microsoft引入了另一个类似于XmlHttpRequest的对象 - &gt; XDomainRequest但我认为你没有使用它,否则IE 7会失败。 (more info here)
jQuery的ajax函数可用于使用JSONP进行跨域调用。然后它将在DOM树中注入一个脚本对象,而不是使用具有跨域限制的XmlHttpRequest对象。
(这篇文章仅与您的解释相关,如果您发布一些代码,它会有所帮助。也许还有其他原因可以在IE 7/8中运行)
答案 1 :(得分:0)
理论上你不能进行跨域调用,但如果你真的想要,有两种选择: 1.拥有基于服务器的代理脚本 2. JSONP