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 调用时,您正在发出 HTTP 请求,就像您在 Web 浏览器中键入http://www.google.com时一样。作为响应,该 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>");
                    }           
                }
            });
        }
    });
});

如果login.php不是您在上面添加的 PHP,那么在您告诉我来自哪个文件之前,我将无法为您提供帮助。

另外,请注意我们将 AJAX 调用包装到#numbers选择框上的更改事件中。这样,当Select Box的值更改时,它将调用此AJAX,然后选择数字。

感谢 tymeJV 的协助。

于 2013-05-31T18:28:28.883 回答