2012-10-06 69 views
-1

我有一個js函數,它使用$ .post來獲取數據和存儲值在隱藏字段中的函數工作正常,但在調用函數之外的函數外它不會工作,但如果我只使用alert('sometext');警報前隱藏字段的值,那麼它將存儲值,並給予正確的輸出 代碼看起來象值不存儲在隱藏字段

function abc(){ 
    $.post('sch.php',{begin:'he'},function(data){ 
     $('#g').attr('value',data); 
    }); 
} 
//call a function 
abc(); 
alert($('#g').attr('value')); 
//won't alert stored value 
+1

你需要了解如何** ** AJAX作品讀了:當你試圖acceess it.You應該使用同步看漲或看跌都靠裏面的代碼回調method.Modified代碼數據不可用。您必須將所有代碼移到回調函數中。 –

+0

是否有任何問題,如果我使用 $ .ajaxSetup({async:false }); –

回答

2

$ .post是異步的。

function abc(callback){ 
    $.post('sch.php',{begin:'he'},function(data){ 
     $('#g').attr('value',data); 
     callback(); 
    }); 
} 
//call a function 
abc(function(){ 
alert($('#g').attr('value')); 
}); 
+0

但abc(function() ($('#g')。attr('value')); }); 它不會工作,我不會我可以訪問全球//任何方式\\ –

+0

@Arshpreet是的,你可以在全球範圍內訪問它,但要確保$ .post的回調執行(數據在隱藏字段中設置)。 – Anoop

0

使用.VAL()設置的值。

$("#g").val(data); 
+0

沒有它將不會工作它與attr('value',data)工作相同 –

+0

您在ajax調用完成之前發出警報。它是異步的。在回調中做警報,而不是在外面。 – chovy

+0

如果我只想將值存儲在隱藏字段[使用回調()]並想稍後使用,那麼它可以[外] –