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

もう1つのことは、イニシャライザで、「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 に答える