开发者

What does "this" refer to in the following javascript?

DISCLAIMER: I am asking about a specific use of this, not what this is used for in general. So, please no google/copy/paste speed answers (:

I have the javascript/jquery code below:

var req = {};

function getData()
{
    var fromPage = 0;
    var开发者_运维技巧 toPage = 1;

    req = $.ajax({
                    url: "/_vti_bin/lists.asmx",
                    type: "POST",
                    dataType: "xml",
                    data: xmlData,
                    complete: onSuccess,
                    error: function (xhr, ajaxOptions, thrownError) {
                        alert("error: " + xhr.statusText);
                        alert(thrownError);
                    },
                    contentType: "text/xml; charset=\"utf-8\""
                });

     req.fromPage = fromPage;
     req.toPage = toPage;
}

function onSuccess(resp) {
    alert(this.fromPage);
}

I find it pretty confusing that the code is using fromPage in two places (sorry not my code).

Does this refer to the var declared inside of getData or the one that is part of the req object? Or maybe something else entirely....

Any help appreciated.


According to jQuery.ajax documentation:

The this reference within all callbacks is the object in the context option passed to $.ajax in the settings; if context is not specified, this is a reference to the Ajax settings themselves.

In other words, since you didn't set the context option, this will be the options object {...} passed as the parameter to $.ajax.

The code you posted seems wrong: it reads fromPage from the wrong object. It would work if you set fromPage on the options object instead:

req = $.ajax({
    //other options here...
    fromPage: fromPage
});


onSuccess() is being called from the complete handler in the context of the ajax request, which is being assigned to the req object, so this is that context - i.e. the req object, and fromPage is in fact req.fromPage


I belive this is refering to req.fromPage since that is the object that contains the called function.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜