2014-11-01 34 views
0

我在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

我的任务是或多或少相同,但东西是不正确与我平变化,任何想法愚蠢的事情我在想念着什么呢?感谢

回答

2

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

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

1

好,test_function是PHP的服务器上,并onchange是在客户端/浏览器。他们不能直接对话。

尝试增加一些JavaScript(和jQuery)到HTML页面。

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

现在点动事件会执行这个javascript函数,它会在后台加载该server.php页面。

(这是未测试的代码)