代码之家  ›  专栏  ›  技术社区  ›  mcgrailm

jquery xml存在

  •  0
  • mcgrailm  · 技术社区  · 14 年前

    我想使用javascript/jquery来确定XML文件是否存在。 我不需要处理它;我只需要知道它是否可用,但我似乎找不到简单的支票。

    以下是我的尝试:

     jQuery.noConflict();
    
      jQuery(document).ready(function(){
        var photo = '223';
        var exists = false;
    
        jQuery.load('/'+photo+'.xml', function (response, status, req) { 
          if (status == "success") { 
            exists = true;
          }
        });
      });
    
    2 回复  |  直到 8 年前
        1
  •  3
  •   Erikk Ross    14 年前

    假设您谈论的是服务器上的XML文件,那么您可以执行Ajax请求,然后编写一个自定义错误处理程序来检查错误响应消息。您需要知道丢失文件(通常是404)的确切错误消息代码是什么。您可以使用Firebug控制台检查准确的错误消息和代码。

    $.ajax({
         type: "GET",
         url: "text.xml",
         dataType: "xml",
         success: function(xml) {
            alert("great success");
         }, 
         error: function(xhr, status, error) {
            if(xhr.status == 404)
            {
                alert("xml file not found");
            } else {
                //some other error occured, statusText will give you the error message
                alert("error: " + xhr.statusText);
            }
         } //end error
     }); //close $.ajax(
    
        2
  •  0
  •   jweyrich    14 年前

    我不明白你的问题。如果我理解,您需要验证HTTP服务器中是否存在文件(XML)。

    对吗?如果是这样,您可以这样做:

    $.get('url-to-file.xml', function(response, status, req) {
        if (status == 'success') {
            alert('exists');
        }
    });
    

    已编辑:正如@lzyy在注释中所指出的,.get()仅在成功时调用回调。但是,我将坚持使用$(document)作为选择器的.load()。见:

    $(document).load('url-to-file.xml', function(response, status, req) {
        if (status == 'success') {
            alert('exists');
        } else if (status == 'error') {
            alert('doesnt exist');
        }
    });