2015-12-26 36 views
0

我目前有多个参数发送到与AJAX相关的回调成功函数的问题。发送多个参数到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参数为未定义,我只是有一个混乱的时间,试图弄清楚这是为什么。如果有人能给我一两个指针,我会非常感谢!

+1

你来的onSuccess电话得到两个参数,但你的函数需要三个参数,所以第三个参数是未定义的。 “地位”并不是无处不在。 ;-) 圣诞快乐! – flaschenpost

回答

1
function OnSuccess(data, status, parentWindow) 

此功能需要3个参数。

OnSuccess(data, parentWindow); 

你只在发送2个参数,因为它是现在,你的函数接收parentWindowstatus

假设Ajax success回调有你想要的数据(就像你说的那样),那么它不是闭包问题。

+0

Ahhhh jeeze,我意识到这是一个小错误。我想我一直在看我的代码太久了,谢谢,它的工作。 – Tastybrownies

0

检查参数和参数订购

success: function(data) { alert(this); alert(parentWindow); OnSuccess(data, parentWindow); }, 

应该

success: function(data) { alert(this); alert(parentWindow); OnSuccess(data,'', parentWindow); }, 

在的onSuccess函数访问parentWindow没有 '这个' 或 '数据'

alert("my window " + parentWindow);