2

我有一个 HTML 列表框,我希望能够选择该列表框中的任何值,并根据该选择使用 PHP 数据库查询更新第二个列表框。

我尝试过的选项:

-我尝试过使用 JSON。我使用 Javascript 更新第二个列表框并调用外部 PHP 脚本,但返回的 PHP 值将是一个数组,并且不会与 Javascript 很好地转换。

- 我无法使用 cookie,所以我使用 HTML 会话。当您在第一个列表框中选择一个值时,它会更新会话值并刷新页面。重新加载后,页面使用 Session 值执行 PHP 脚本来更新第二个列表框,但我无法使用 Javascript 通过调用 onChange="function(); 使用第一个列表框更新 HTML Session 和第一个列表框的选定值.

有没有其他可用的选项来实现这一点?或者我该如何修复这些选项之一以使其正常工作?

4

2 回答 2

1

所以这就是我将如何使用ajax。我会让 onChange 事件将列表的值传递给隐藏的输入。然后我会以以下方式发布输入。

var params = $('#hiddenInputId').serialize();
$.post('post.php', params, function(data){
                if(data.match(/^[\r\n\s]*OK=/)) {
                    $('#listOut').html(data.slice(data.indexOf('OK=') + 3));
                } 
                else if(data.match(/^[\r\n\s]*ERRORS=/)) {
                    alert(data.slice(data.indexOf('ERRORS=') + 7));
                }
}); 

#listOut 将指向一个跨度或您想用您的返回选择列表填充的东西。您将在 post.php 页面上设置一个 if 语句,用于侦听隐藏输入的提交并返回正确的值。

if(isset($_POST['hiddenInputName'])){
    $query = "SELECT * FROM table WHERE something LIKE'" . $_POST['hiddenInputName']."';";
    $result = mysql_query($query) or die(mysql_error());
    echo 'OK=created Select: <select>';
    while($row = mysql_fetch_array($result)){
        echo"<option value='" . $row['field_name'] . "'>" . $row['field_name'] ."</option>";
        }    
    }
    echo "</select>";
}
于 2012-11-12T16:53:53.580 回答
1

您说您尝试过使用 JSON,但您显然没有完全理解这意味着什么。JSON 只是一种格式化字符串的方式,任何具有解析器的机器都可以普遍理解。PHP 值是一个“数组”因此不可转换的想法是没有意义的;重要的是它以JSON 格式发送到客户端。

如果您在 PHP 中有一个数组,您可以使用以下json_encode函数将其转换为 JSON 格式:

<?php
my_arr = array('a' => 'b', 'c' => 'd');
// do stuff to fill array
echo json_encode($my_arr);
?>

当您在 JavaScript 代码中以 JSON 格式收到它时,您可以将其解析为 JavaScript 对象 - 有关详细信息,请参阅此问题

于 2012-11-12T16:24:15.707 回答