使用onchange和下拉列表选择框

时间:2014-11-01 14:10:21

标签: javascript php onchange

我在onchange事件上遇到了一些麻烦。这个任务是用于排序数据的大部分代码,但是尝试通过隔离代码,我将其跟踪到onchange事件并没有实际工作,我看不出什么是错误的。

<?php   include("db_connect.php"); 

$query = 'SELECT * FROM db_class_catagories';
$result = mysqli_query($dbconnection,$query);
?>


<select id="primary_catagory" name="primary_catagory" onchange = "test_function(this)"style="position:absolute;left:10px;top:10px;width:315px;height:20px;z-index:11;text-align:left;">
<option value=''>Select</option>
<?php while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)){
    echo "<option value='" . $row['primary_catagory'] . "'>" . $row['primary_catagory'] . "       
</option>";}
?>
</select>

<?php
function test_function($primary_catagory)   {
echo $primary_catagory;
}
?>

此列表是从数据库生成的,并且被称为完美,但无论我选择什么都不会发生。主脚本使用了AJAX但是没有发生任何事情,我能想到的是onchange不发送数据。

我正在使用这个例子,但无法让它工作。 How can i populate a dropdown list by selecting the value from another dropdown list

我的任务或多或少是相同的但是我的onchange有些不对劲,任何想法,我错过了什么愚蠢的事情?感谢

2 个答案:

答案 0 :(得分:2)

onchange事件是一个浏览器事件,因此test_function()必须是JavaScript函数。它可以使用Ajax将有关选择的信息发送到服务器端PHP侦听器,但必须在客户端处理onchange事件。

这里有一个简单的例子:Why am I not getting the value from onChange with Select?只需将Ajax调用放在警报的位置(在答案中,而不是问题。)

答案 1 :(得分:1)

嗯,test_function在服务器上是PHP,onchange在客户端/浏览器上。他们不能直接相互交谈。

尝试将一些Javascript(和jquery)添加到html页面。

 <script>
 function test_function(e) {
     $.getJSON("server.php", {
         "action": "save",
         "val": $(e.currentTarget).val()
     }
 }
 </script>

现在,inching事件将执行此javascript函数,该函数将在后台加载该server.php页面。

(这是未经测试的代码)