免责声明:我问的是this
的具体用法,而不是this
一般使用的用途。所以,请不要谷歌/复制/粘贴速度答案(:
我有以下的javascript / jquery代码:
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);
}
我发现代码在两个地方使用fromPage
非常令人困惑(对不起我的代码)。
this
是否引用getData
内部声明的var或req
对象中的var?或者完全是其他东西......
任何帮助表示赞赏。
答案 0 :(得分:5)
根据jQuery.ajax
文件:
所有回调中的this引用是在设置中传递给$ .ajax的context选项中的对象;如果未指定context,则这是对Ajax设置本身的引用。
换句话说,由于您未设置context
选项,this
将作为参数传递给{...}
的选项对象$.ajax
。
您发布的代码似乎错误:它从错误的对象中读取fromPage
。如果您在选项对象上设置fromPage
,它将起作用:
req = $.ajax({
//other options here...
fromPage: fromPage
});
答案 1 :(得分:2)
onSuccess()
在ajax请求的上下文中从complete
处理程序调用,该请求被分配给req
对象,因此this
就是该上下文 - 即req
对象,而fromPage实际上是req.fromPage
答案 2 :(得分:0)
我相信this
指的是req.fromPage
,因为那是包含被调用函数的对象。