我在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有些不对劲,任何想法,我错过了什么愚蠢的事情?感谢
答案 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页面。
(这是未经测试的代码)