1

そのため、ユーザーがフォームを送信したときに呼び出される関数があり、jquery ロードを実行して、入力に基づいて対応する曲を見つけて表示します。これはすべて正常に機能しますが、これらの値を配列に保存して、それらを使って何かをしたいと思います (今はデバッグのためだけに警告します)。私の推測では、配列をチェックする前に ajax が完了するのを待っていないため、コードは「未定義」を送信していると思われます。SO、どうすればこれを修正できますか?以下のコード:

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
        <script type="text/javascript">
        //final step is to initialize an array outside the function, fill it in, 
        //then window.out on each part of the array
            function callMe() {
                var hold = new Array();

                for (var i = 0; i < 5; i++) {
                    var b = $('#song'+i).val();
                    var c = $('#artist'+i).val();
                    var d = b + " " + c;
                    $('#'+i).html("Loading...");
                    $('#'+i).load('getInfo.php', {term: d}, function(data){
                        //I have no clue why 5 keeps popping up
                        hold[i] = data;
                        // alert("The number"+i+":"+hold[i]);
                    });       
                }
                for (var i = 0; i<5; i++) {
                    alert(hold[i]);
                }
            }
            $(function() {
                $('form').submit(function() {
                    callMe();
                    return false;
                });
            });
        </script>
4

2 に答える 2

6

使用する.done()

$('#'+i).load('getInfo.php', {term: d}, function(data){
     hold[i] = data;
     // alert("The number"+i+":"+hold[i]);
}).done(function(){ /* code goes here */ }); 

ここを見る

于 2013-03-18T04:47:40.680 に答える
0

ajax リクエストを実行して、成功イベントを処理できます。

$.ajax({
            //post URL
            url: 'getInfo.php', 
            type: "GET",

            //assumes only one form on page
            data: {term: d},

            //success
            success: function (response) {              
             //do something
            }       
        });
于 2013-03-18T04:47:33.037 に答える