我正在解析xml,我想要的是在解析之后返回xml。问题是我的getResult()
函数result
的值为undefined
。为什么以及如何使其发挥作用?
这是我的代码
var result = '';
var Xml = {
to : null,
from : null,
url : null,
init: function (fromaddress, toaddress, link) {
from = fromaddress;
to = toaddress;
url = link;
this.requestXml();
return this;
},
requestXml: function () {
$.ajax({
type: "GET",
url: url,
dataType: "xml",
success: this.parseXml
});
},
parseXml: function (xml) {
console.log('xml: ' + $(xml));
result = $(xml);
},
getResult: function () {
console.log('Result: ' + Xml.result); //<--- Here result has undefined value
return result;
}
};
答案 0 :(得分:1)
永远不会设置Xml.result。也许我错过了一些东西,但你需要在parseXml中这样做才能设置它的结果字段:
this.result = $(xml);
在getResult中,您的console.log调用不应显示未定义。你甚至可以让它返回this.result
。
另一方面,在初始化程序中,您应该使用“this”关键字设置每个属性。
答案 1 :(得分:1)
以下是我解决问题的方法
var Xml = function () {
var to, from, url, result,
init = function (fromaddress, toaddress, link, callback) {
from = fromaddress;
to = toaddress;
url = link;
requestXml(callback);
},
requestXml = function (callback) {
$.ajax({
type: "GET",
url: url,
dataType: "xml",
success: callback
});
},
getResult = function () {
return result;
};
return {
init : init,
getResult : getResult
};
};