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

在jquery$.ajax()执行之后,我可以与XML进行交互吗?

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

    是否可以在生成 $.ajax() 打电话?

    IE:

    .$ajax( 
    url: "someUrl", 
    type: "GET", 
    dataType:"xml", 
    success: function(xml){ //some function },
    error : function(){ //some function}
    });
    
    $("#somebutton").click(function(xml){ //function that interacts with XML });
    

    我无法与任何XML文件交互,除非所有函数都在 success 参数。任何提示,还是我只需要将我的所有功能 成功 功能?有没有比使用 $AXAX()

    3 回复  |  直到 14 年前
        1
  •  1
  •   Anatoly G    14 年前

    success函数是当响应从服务器返回时执行的闭包。变量xml仅在函数范围内有效。你可以做的是一些事情:

    1. 让你的管理者成功 功能
    2. 在Ajax调用之外创建一个变量,并在成功 函数将XML值赋给 那个变量

    所以:

    var xmlObj = "";
    $.ajax({
      success:function(xml) {
        xmlObj = xml;
      }
    });
    
    alert(xmlObj);
    
        2
  •  1
  •   CastroXXL    14 年前

    函数不一定要在success函数中才能使用它,但是xml变量只存在于success函数范围内,您必须为它设置另一个变量。

    不工作

    $.ajax( 
      url: "someUrl", 
      type: "GET", 
      dataType:"xml", 
      success: function(xml){ //some code },
      error : function(){ //some code}
    });
    
    function parse() {
      //xml processing code
    }
    

    作品

    var myXML;
    
    $.ajax( 
      url: "someUrl", 
      type: "GET", 
      dataType:"xml", 
      success: function(xml){ 
        myXML = xml;
        //some code 
      },
      error : function(){ //some code}
    });
    
    function parse() {
      //myXML processing code
    }
    

    另外,如果在Ajax调用成功完成之前调用Parse,那么myXML变量仍然为空。总是可以执行检查。

    function parse() {
      if (myXML) {
        //myXML processing code
      } else {
        //ajax not completed successfully yet
      }
    }
    
        3
  •  1
  •   Richard Marskell - Drackir Sunil Tandon    14 年前

    您也可以这样做,不需要全局变量:

    $.ajax({ 
        url: "someUrl", 
        type: "GET",
        dataType:"xml", 
        success: function(xml){
            $("#somebutton").bind("click",{xmlData:xml}, buttonClick);
        },
        error : function(){ /*some code*/ }
    });
    
    function buttonClick(event) {
        var xml = event.data.xmlData;
        //function that interacts with XML
    }