如何使用JavaScript检查文件的存在(这是我想在这种情况下检查的xml文件)?
答案 0 :(得分:5)
如果你正在使用jQuery,你可以尝试加载文件
$.ajax({
type: "GET",
url: "/some.xml",
success: function()
{ /** found! **/},
error: function(xhr, status, error) {
if(xhr.status==404)
{ /** not found! **/}
}
});
如果您不使用jQuery:
function ajaxRequest(){
var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]
//Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
if (window.ActiveXObject){
for (var i=0; i<activexmodes.length; i++){
try{
return new ActiveXObject(activexmodes[i])
}
catch(e){
//suppress error
}
}
}
else if (window.XMLHttpRequest) // if Mozilla, Safari etc
return new XMLHttpRequest()
else
return false
}
var myrequest=new ajaxRequest()
myrequest.onreadystatechange=function(){
if (myrequest.readyState==4){ //if request has completed
if (myrequest.status==200 || window.location.href.indexOf("http")==-1){
// FOUND!
}
}
}
myrequest.open('GET', 'http://blabla.com/somefile.xml', true);
答案 1 :(得分:4)
如果文件位于为包含javascript的页面提供服务的同一主机上,您可以尝试sending an ajax请求并验证返回的状态代码:
function checkFile(fileUrl) {
var xmlHttpReq = false;
var self = this;
// Mozilla/Safari
if (window.XMLHttpRequest) {
self.xmlHttpReq = new XMLHttpRequest();
}
// IE
else if (window.ActiveXObject) {
self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
self.xmlHttpReq.open('HEAD', fileUrl, true);
self.xmlHttpReq.onreadystatechange = function() {
if (self.xmlHttpReq.readyState == 4) {
if (self.xmlHttpReq.status == 200) {
alert('the file exists');
} else if (self.xmlHttpReq.status == 404) {
alert('the file does not exist');
}
}
}
self.xmlHttpReq.send();
}
checkFile('/somefile.xml');
答案 2 :(得分:0)
Javascript实际上没有任何文件处理功能。最好的办法是检查服务器端并将一些上下文发送回客户端。
如果你想获得超级hacky,你可以调用xmlHttpRequest
(如果你使用的是jQuery,请查看$.ajax
函数)
一旦调用$ .ajax,您就可以使用成功/错误处理程序来确定要执行的操作。如果文件不存在,它应该吐出错误。
这当然不是推荐的方法。
答案 3 :(得分:0)
我没有足够的声誉来发表评论所以请注意,在Anwar Chandra的答案(非jQuery版本)中你最终必须打电话:
myrequest.send();
此外,HEAD方法最好“检查文件是否存在”,因为您不需要从服务器读取整个文件。