执行Jquery$.ajax()后,我可以与XML交互吗?

执行Jquery$.ajax()后,我可以与XML交互吗?,jquery,xml,ajax,Jquery,Xml,Ajax,在调用$.ajax()之后,是否可以与XML文件交互 即: 我无法与任何XML文件交互,除非所有函数都在success参数中。有什么提示吗,或者我只需要将所有功能放入success功能中?有没有比使用$.ajax()更好的方法来完成我所描述的任务成功函数是在服务器返回响应时执行的闭包。变量xml仅在函数范围内有效。您可以做几件事: 让你的管理者参与到成功中来 作用 在ajax调用之外和success中创建一个变量 函数将XML的值分配给 那个变量 因此: success函数是一个闭包,当服务器返

在调用
$.ajax()
之后,是否可以与XML文件交互

即:


我无法与任何XML文件交互,除非所有函数都在
success
参数中。有什么提示吗,或者我只需要将所有功能放入
success
功能中?有没有比使用
$.ajax()

更好的方法来完成我所描述的任务成功函数是在服务器返回响应时执行的闭包。变量xml仅在函数范围内有效。您可以做几件事:

  • 让你的管理者参与到成功中来 作用
  • 在ajax调用之外和success中创建一个变量 函数将XML的值分配给 那个变量
  • 因此:


    success函数是一个闭包,当服务器返回响应时执行。变量xml仅在函数范围内有效。您可以做几件事:

  • 让你的管理者参与到成功中来 作用
  • 在ajax调用之外和success中创建一个变量 函数将XML的值分配给 那个变量
  • 因此:


    函数不必在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变量仍然为null。可以随时进行检查

    function parse() {
      if (myXML) {
        //myXML processing code
      } else {
        //ajax not completed successfully yet
      }
    }
    

    函数不必在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变量仍然为null。可以随时进行检查

    function parse() {
      if (myXML) {
        //myXML processing code
      } else {
        //ajax not completed successfully yet
      }
    }
    

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

    $.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
    }

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

    $.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
    }

    哇,我甚至没有想过要把xml分配给一个全局变量。谢谢哇,我甚至没有想过要把xml分配给一个全局变量。谢谢谢谢你的回答。我认为对于这个项目来说,将xml设置为全局变量将是一个更好的解决方案,但对于未来的项目,我会记住这个方法!知道很多方法来完成这些事情是很好的!谢谢你的回答。我认为对于这个项目来说,将xml设置为全局变量将是一个更好的解决方案,但对于未来的项目,我会记住这个方法!知道很多方法来完成这些事情是很好的!感谢您提供有关全局变量的更多信息。另一个问题:“if(myXML)”不只是检查变量是否已初始化吗?或者它检查变量是否有值?它检查变量是否为空且不等于0或false。因此,未定义、null、“、0和false都将导致false。只是一个快速检查的方法。并不总是最好的(取决于具体情况),但它会起作用。感谢您提供有关全局变量的更多信息。另一个问题:“if(myXML)”不只是检查变量是否已初始化吗?或者它检查变量是否有值?它检查变量是否为空且不等于0或false。因此,未定义、null、“、0和false都将导致false。只是一个快速检查的方法。并不总是最好的(视情况而定),但它会起作用。