在解析xml后,我得到了未定义的结果

时间:2012-11-08 09:30:15

标签: javascript jquery xml ajax

  

可能重复:
  Keeps saying result property is not defined. Why?

我正在解析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;
}
};

2 个答案:

答案 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
 };
};