0

私はこれで最後の仕上げをするのに苦労しています。私はまだajaxとjsonにかなり慣れていませんが、これまでのところ私が持っているものは次のとおりです。PHPファイルから配列を取得し、ajax/json経由で選択ドロップダウン(#input)にロードしようとしています。私はかなり近いと思いますが、どこがめちゃくちゃなのかわかりません。助けてください

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

<script src="../_js/jquery-1.7.2.min.js"></script>

<script>
$(document).ready(function() {

if ($("#numbers").val() == "2") {
        $.ajax({
            type: 'POST',
            url: 'login.php',
            data: 'id=testdata',
            dataType: 'json',
            cache: false,
            success: function(result) {
                var numbers = <?php echo json_encode($array); ?>;
                for (i=0;i<numbers.length;i++){
                    $('#input').append("<select>" + numbers[i] + 
"</select>");
                }           
            },

        });
} 

});
</script>

</head>
<body>
<div class="wrapper">
    <div class="header">
    </div>
    <div id="content">
        <div class="main">
            <div id="formwrapper">


        <select id="numbers">
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
        </select>
        <select id="input"></select>


</div>
        </div>
    </div>

</div>
</body>
</html>

そして、ここに私のPHP(login.php)があります

<?php
$array = array(1,2,3,4,5,6);
echo json_encode($array);
?>
4

1 に答える 1

2

スクリプトでは、AJAX 呼び出しから返されたデータに対して何もしていません。AJAX の仕組みを理解していないことが原因だと思います。極度に詳細には立ち入らずに説明しようと思います。

URL に対して AJAX 呼び出しを行う場合、Web ブラウザにhttp://www.google.comと入力する場合と同様に、HTTP 要求を行っています。応答として、その URL の反対側にあるサーバーは、いくつかのデータを含む HTTP 応答を送信します。

AJAX の場合、 の応答を要求しています。login.phpこれは、上記の質問に追加した PHP であると想定します。success関数では、 を取得しますresult。それresultが によって出力されたすべてですlogin.php

そう、

$(document).ready(function() {
    $("#numbers").change(function(e) {
        if ($(this).val() == "2") {
            $.ajax({
                type: 'POST',
                url: 'login.php',
                data: 'id=testdata',
                dataType: 'json',
                cache: false,
                success: function(result) {
                    var numbers = result; //result is equal to your array from the php. You don't put PHP here.
                    $('#input option').remove(); //Remove any existing options.
                    for (i=0;i<numbers.length;i++){
                        $('#input').append("<option>" + numbers[i] + "</option>");
                    }           
                }
            });
        }
    });
});

が上で追加した PHP でない場合login.phpは、それがどのファイルからのものかを教えていただくまで、私はあなたを助けることができません。

また、AJAX 呼び出しを#numbers選択ボックスの変更イベントにラップしていることにも注意してください。そうすれば、選択ボックスの値が変更されると、この AJAX が呼び出され、数字が選択されます。

アシストしていただきありがとうございます。

于 2013-05-31T18:28:28.883 に答える