2012-11-30 68 views
0

我有一個代碼,像jQuery的選擇列表中的問題

if($('#nodeNo').val() == null){ 
       cityChange(1);      
       $('#nodeNo option[value=<%=request.getAttribute("nodeval")%>]').attr('selected','selected'); 
    } 

有一個Ajax調用在cityChange(1)填充nodeNo選擇列表,然後下一個語句設置選定值。但是由於並行執行,上面的代碼不起作用。 ajax調用和設置值一起執行。另一個Ajax調用需要一點時間,到那時下一個語句結束執行。因此該列表已正確填充,但所選值無法設置。

請幫助!!

+3

爲什麼不把$('#nodeNo ..')放到ajax調用的回調中?這樣你就不必擔心任何競爭條件 – kennypu

+0

@kennypu我該怎麼做? –

+1

可能會看到你的ajax方法 –

回答

0

你必須

$('#nodeNo option[value=<%=request.getAttribute("nodeval")%>]').attr('selected','selected'); 

轉移到了ajax成功回調cityChange方法內。

+0

由於某些條件,我無法將設置的函數調用轉移到Ajax中,即函數cityChange(1)。下一個選項是什麼? –

+1

只是一個想法。定義一個全局變量。在cityChange成功回調中設置變量,並使用setInterval檢查該變量是否設置。如果設置,則選擇下拉列表。 – Tariqulazam

1

您正在進行ajax調用,並在ajax調用成功或完成時爲該select元素設置數據源,並且我建議您在aCax完成cityChange(1)中設置所選值;方法。

Regards,

+0

由於某些條件,我無法將設置的函數調用轉移到Ajax中,即函數cityChange(1)。下一個選項是什麼? –