2017-05-29 6 views
0

jsonファイルの非同期要求の後にselectフィールドを更新しようとしていますが、何か問題があります。コードを見てみましょう:JSONリクエスト後にJvaleryの.valが動作しない

<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> 

私は....機能のみリクエストの終了時に、私は選択フィールドを更新しますので、$ .whenを使用して、残念ながらそれは働いていないそれをやりました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

sugestionに感謝しますが、うまくいきませんでした.... –

+0

.val()文の直後に 'console.log(state)'を置くと、コンソールには何が表示されますか? – manassehkatz

+0

'.val()' I文の直後に 'console.log(state)'を置くと期待される値の文字列が表示されます。 'getAllStates()'の実行が完了するのを待つ必要があります。なぜなら、selectフィールドにjsonリクエストの値を埋め込むからです。したがって、私は '.val()'文を使ってこの値の1つを選択することができます。残念ながら、それは動作していません..... –

関連する問題