1

私は隠しフィールド値を渡す ajax 関数を使用しています。それに応じて、値が次のファイルに渡され、クエリが実行され、後でその隠しフィールドに更新する値 (html) が返されますが、問題は隠しフィールドの更新された値を使用して変数を渡すと、更新された新しい値が使用されず、代わりに隠しフィールドの古い値が使用されますか? 誰でもこれで私を助けることができます

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;

私がやろうとしていることをステップで述べましたか?誰かがこれに対する解決策を見つけてくれることを願っています。

4

1 に答える 1

2

$.ajax の呼び出しは非同期であるため、コードはサーバーから応答を受信するまで待機せず、2 番目のvar prod_id = $('.prod_id').val();ステートメントを実行します。

コードの一部が、Ajax 呼び出しへの応答が受信される前ではなく、受信された後に確実に実行されるようにする唯一の方法は、それを「success」関数内に配置することです。

別のアプローチ (ただし、お勧めしません) は、async : falseを設定して ajax 呼び出しを同期させることです。ただし、ブラウザが応答しなくなる可能性があるため、これは悪い習慣です。上記のようにコードをリファクタリングすることをお勧めします。

于 2012-07-22T10:30:18.217 に答える