2015-12-26 35 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);