2012-07-22 87 views
1

我正在使用ajax函數,其中我傳遞一個隱藏的字段值,並根據該值傳遞到下一個文件和查詢運行重新調整值(html),我更新後來到那個隱藏的領域,但問題是當我使用隱藏字段的更新值通過一個變量傳遞它dosent採取新的值更新,而不是它需要隱藏字段的舊值?誰能幫我這個ajax請求後隱藏字段的值

var pre_prod_id = $('.prod_id').val(); //old hidden field value 
$.ajax({ 
    type: "GET", 
    url: "eg", 
    cache: false, 
    success: function(html) { 
     $('.prod_id').val(html); // got updated value via ajax and updated 
    } 
}); 
var prod_id = $('.prod_id').val(); // getting new value of hidden field 
alert(prod_id); // alert gives still the old value ??? 
$target = 'egab=' + abd + '&& abc=' + abc + '&& action=' + action + '&& prod_id=' + prod_id; 

我的步驟我所試圖做的已經提到?希望有人找到解決辦法。

+0

任何解決方案的朋友?真的需要幫助這個 – 2012-07-22 11:10:35

回答

2

對$ .ajax的調用是異步的,因此在執行第二條var prod_id = $('.prod_id').val();語句之前,您的代碼不會等待從服務器收到響應。

確保在接收到對Ajax調用的響應之後運行一段代碼的唯一方法就是將它放入「成功」函數中。

另一種方法(但不是我會推薦的方法之一)將通過設置async : false來使ajax調用同步。然而,這是不好的做法,因爲它可能導致瀏覽器無響應 - 我建議按上述重構代碼。

+0

但我的代碼的其餘部分不檢測$目標,如果我把$目標='';在'成功'功能裏面。任何替代方案? – 2012-07-22 10:40:14

+0

我假設你需要使用$ target的代碼的其餘部分也必須在從服務器收到響應之後才運行?在這種情況下,您需要將所有代碼放在'成功'中 - 如果有很多代碼,請將其放入一個命名函數中。 – codebox 2012-07-22 10:46:32

+0

是的,它有很多的代碼,也像api一樣。我用它來做更多的事情。上帝知道m被卡在了這個問題上,我無法在代碼中找到一個東西 – 2012-07-22 10:50:13