在进行$.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()
答案 0 :(得分:1)
success函数是一个闭包,它在响应从服务器返回时执行。变量xml仅在函数范围内有效。你可以做的是一些事情:
这样:
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
}