2016-07-04 31 views
0

我有一些使ajax調用的javascript代碼,得到了一個var,然後嘗試在腳本的稍後使用var。問題是因爲ajax調用,其餘的代碼在它有var之前運行。如果我只是一個警報添加,東西很好地工作:在代碼繼續之前需要由Ajax返回的var

var quote_request_id; 
    $.ajax({ 
      type: "POST", 
      url: rate_url + '/99/1', 
      data: datastring, 
      dataType: "html" 
    }).done(function(data,status,xhr) { 
     quote_request_id = xhr.getResponseHeader('X-QuoteRequest-Id'); 
    }); 

然後我有一個使用quote_request_id VAR其他Ajax調用,但它沒有被設置。如果我只是在上面的代碼塊後添加一個警報,它就會起作用。我意識到這是因爲ajax調用的異步行爲。只需要找出一種方法來獲取var並在代碼的其餘部分使用它。

+1

你認爲你需要什麼,你實際需要的是兩個不同的東西。你實際需要的是重構你的代碼,以考慮從服務器獲取報價請求ID的異步性質。 – Adam

回答

0

然後你不需要AJAX,你需要SJAX這是一個同步通信來代替。將async: false添加到您的ajax對象。 但是,我建議你從第一個success方法或done啓動隨後的ajax調用,以便無論如何你都有變量。

+1

但請注意,這樣做是非常糟糕的做法,並且意味着您會在控制檯中看到瀏覽器警告。更好的解決方案是重構代碼,以便遵循異步原則。 –

相關問題