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

时间:2010-10-21 05:12:57

标签: jquery xml ajax

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

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 });

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

更好的方式来完成我所描述的内容

3 个答案:

答案 0 :(得分:1)

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

  1. 让你的处理程序成功 功能
  2. 创建ajax调用的变量OUTSIDE,并且成功 函数将XML的值赋给 那个变量
  3. 这样:

    var xmlObj = "";
    $.ajax({
      success:function(xml) {
        xmlObj = xml;
      }
    });
    
    alert(xmlObj);
    

答案 1 :(得分:1)

函数不必在success函数中使用它,但xml varible只存在于成功函数范围内,您必须为其设置另一个变量。

不起作用

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

答案 2 :(得分:1)

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

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