0

可能重复:
一直说未定义结果属性。为什么?

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

2 回答 2

1

Xml.result 永远不会被设置。也许我遗漏了一些东西,但是您需要在 parseXml 中执行此操作才能设置其结果字段:

this.result = $(xml);

在 getResult 中,您的 console.log 调用不应显示未定义。你甚至可以让它返回this.result

另一件事,在您的初始化程序中,您应该使用“this”关键字设置每个属性。

于 2012-11-08T09:36:44.913 回答
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
 };
};
于 2012-11-08T11:25:34.487 回答