2017-05-29 69 views
0

我試圖在爲json文件的異步請求之後更新選擇字段,但出現了錯誤。看看代碼:在JQuery中的.val在JSON請求後無法工作

<script>     
    state = <?= $state ?>; //..var of php that I'll use to set a select field 
    idCity = <?= $idCity ?>; //..var of php     
    $.when(getAllStates()).done(function(){ //..using when to execute something only after the function 
    $('#state').val(state); //..set the select field with var state - not working! 
    }); 
</script> 

我做到了使用$。當因爲只有我會更新的選擇領域的請求結束,但遺憾的是它不工作....功能getAllStates()是在一個js文件中定義的,它是一個json請求。如果我執行$('#state')。val(state);在Javascript控制檯中的,完美地工作。有沒有人可以幫助我?

+0

當你使用這段代碼時,你在控制檯得到了什麼錯誤。 –

+1

我有時看到類型的問題。假設'$ state'是一個整數,因爲如果它是一個字符串,那麼它應該是''';',你可能會遇到問題,因爲HTML輸入字段(例如'$('#state')) ')是字符串。通常最好將所有內容強制爲字符串。 – manassehkatz

+1

getAllStates()是做什麼的?你能展示一個樣本回應嗎? – 31piy

回答

0

根據意見: state = <?= $state ?>; 將字符串變量$ state指定爲純文本。根據值,這可能會導致一個數字的Javascript分配(例如,如果$ state =='7',那麼Javascript分配將是state = 7;,這將使數字爲state)或者可能未定義的對象。無論如何,.val()可以可靠地工作,它應該是一個字符串。所以將其更改爲: state = '<?= $state ?>'; 並查看是否解決了問題。

+0

感謝消化,但它沒有工作.... –

+0

如果你把'console.log(state)'放在.val()語句後面,它在控制檯中顯示了什麼? – manassehkatz

+0

如果我在'.val()'語句之後放置'console.log(state)',它會顯示期望的值,一個字符串。我需要等待'getAllStates()'的完整執行,因爲它會使用json請求中的值填充選擇字段。因此,我可以使用'.val()'語句選擇其中一個值。不幸的是,它一直沒有工作..... –