我似乎无法在我的ajax函数中设置this.chkOK。我有点无能为力这样做,所以我想也许可以调用validateFields.call(这)应该解决我的问题,但我发现事实并非如此。所以,我有点失去了为下一步做的事情。除非必须,否则我不想将其设置为全局变量。我试图设置this.chkOK = true
function validateFields() {
this.chkOK = null;
this.username = function() {
if(FS.gID('username').value.length >= 2) {
var user = FS.gID('username').value;
//Make sure that the username doesn't already exist
FS.ajax('/server/chkUser.php?user='+user,'GET',function(){
validateFields.call(this);
if(xmlText == 0) {
this.chkOK = true;
alert("This user doesn't exist.");
}
else if(xmlText == 1) {
alert("Theres already a user with this username");
this.chkOK = false;
}
});
}
else {
alert("empty");
this.chkOK = false;
}
alert(this.chkOK);
}
}
答案 0 :(得分:1)
示例中this
的值不是它声明的函数,就像您在代码中所假设的那样。
如果您只是使用var chkOK = null;
而不是this.chkOK = null;
,它应该会开始起作用。
答案 1 :(得分:0)
这是因为FS.ajax中的内容与您打算使用的内容不同。 FS.ajax中的this
表示FS
您可以将其分配给另一个变量并在FS.ajax中使用它。例如,
注意 :除非您知道将
this.chkOk
置于函数内部的原因(例如{{1}调用预期的validateFields } 要么call
)apply
是全局对象(您不想要)或this
在严格模式下会导致代码失败
undefined