我目前在向多个与AJAX相关的回调成功函数发送多个参数时遇到问题。
我所要做的就是保留一个变量的值,该变量作为参数包含在AJAX调用所包含的函数中。
我可以获得本机成功函数中存在的值,但是一旦我尝试传递它并在我的回调方法中检索它,突然变量是未定义的。我很困惑为什么会发生这种情况并认为该值会在没有问题的情况下发送给函数。
如果有人能对此有所了解,我将非常感激。我的想法说这可能与范围,$ this以及我如何通过我的变量有关,但我还没有能够将它们整合在一起。以下是我的代码:
function getNum(numb, parentWindow)
{
alert(parentWindow);
alert("before ajax");
$.support.cors = true;
$.ajax
({
type: "POST",
crossDomain: true,
beforeSend: function(request)
{
request.setRequestHeader("Authorization", "Basic");
return true;
},
data: {
'parentWindow' :parentWindow
},
url: webServiceURL,
dataType: "xml",
context: parentWindow,
async: false,
data: soapMessage,
contentType: "text/xml; charset=\"utf-8\"",
success: function(data)
{
alert(this);
alert(parentWindow);
OnSuccess(data, parentWindow);
},
error: OnError
});
}
上面的parentWindow警告确实回来作为一个对象。第二部分是针对正在调用的OnSuccess函数。
function OnSuccess(data, status, parentWindow)
{
alert("my window " + data.parentWindow);
alert("my window " + this.parentWindow);
var documentValArr = parseXMLRrec(data);
if(documentValArr)
{
insertDataIntoTable(documentValArr);
}
}
OnSuccess函数中的警报都将parentWindow参数返回为undefined,我只是有一个令人困惑的时间试图找出原因。如果有人能给我一两个指针,我会非常感激!
答案 0 :(得分:1)
function OnSuccess(data, status, parentWindow)
此函数有3个参数。
OnSuccess(data, parentWindow);
您只能发送2个参数。就像现在一样,您的函数会收到parentWindow
status
。
假设Ajax success
回调具有您想要的数据(如您所说:它有),那么它不是闭包问题。
答案 1 :(得分:0)
检查您的参数和参数顺序
success: function(data) { alert(this); alert(parentWindow); OnSuccess(data, parentWindow); },
应该是
success: function(data) { alert(this); alert(parentWindow); OnSuccess(data,'', parentWindow); },
在onSuccess函数中访问parentWindow而不使用' this'或者'数据'
alert("my window " + parentWindow);