我想用$ .ajax从xml文件中读取一些信息,这是我的js代码:
$.ajax({
type: "get",
url: "Database/App_all.xml",
dataType: "xml",
timeout: 2000,
beforeSend: function () {
},
success: function (xml) {
$(xml).find("app[id='id-1']").appendTo($("#contain"));
},
error: function () {
alert("ajax failed!");
}
});
但是,代码只适用于firefox和opera。
它在chrome(7.0.517.24)和safari(5.0.1)中不起作用,在没有任何警报的情况下失败,甚至没有警报(“ajax失败”)。
Chrome和Safari中的$ .ajax是否有任何错误?请问如何解决问题?
非常感谢你:)
答案 0 :(得分:4)
您应该使用chrome或safari的内置开发人员工具(ctrl + shift + i)来跟踪JS错误并跟踪实际的AJAX请求。
您的代码是否包含在document.ready中?在javascript控制台中有任何错误吗?也尝试在成功回调线之后输出一些东西。
另一个原因可能是服务器返回的XML文件的mime-type不正确。它应该是[Content-type:text / xml]。您可以在chrome或safari的内置开发人员工具中检查它 - 只需在选择xml资源时查找标题选项卡。如果是实际问题,您可能需要调整Web服务器配置(主配置或.htaccess for apache)以返回正确的mime类型。
答案 1 :(得分:1)
首先,谢谢你 gajendra.bang 和MārisKiseļovs给我你的建议,我知道我的代码出了什么问题,在我得到一个糟糕的故事后,我试图知道$ .ajax从xml中得到了什么,所以我使用firebug检查div#contains我发现:
<div id="contain">
<auther>cocept</auther>
</div>
是的,我认为<auther></auther>
必须解决问题,我甚至不知道$ .ajax会获得标记名
所以我重写了它:
success: function (xml) {
$("#contain").html($(xml).find("app[id='id-1']").find("auther").text());
}
然后div $ contains包含:
<div id="contain">
cocept
</div>
所以,chrome和safari可以再次显示!
答案 2 :(得分:0)
我认为您在阅读每个ajax的本地文件时遇到问题。 Ajax可用于从同一Web服务器读取文件,但如果您不是根据HTTP读取它,则存在一些安全限制。
在firefox和opera中,你可以按照ajax读取本地文件(使用url,如file:/// C:/Program%20Files/My/Database/App_all.xml),没有任何问题。
在Internet Explorer中,您应该使用dataType: 'text'
,然后将文本转换为XML(阅读更多here)。
为了能够在Chrome中读取本地文件,您必须使用其他参数重新启动chrome:
chrome.exe --allow-file-access-from-files
(确保在启动Chrome.exe之前关闭所有其他chorme实例)。
答案 3 :(得分:0)
这是本地文件的问题...您应该尝试在网络服务器上传它们并从那里检查
答案 4 :(得分:-1)
$(xml).find("app[id='id-1']").appendTo($("#contain"));
什么是xml基本上返回,带有“#”的元素,如“#mydiv”或类似“.mydiv”
我认为您正在尝试访问某个元素,如果您没有使用“#”返回它,请尝试
$("#"+xml).find("app[id='id-1']").appendTo($("#contain"));