我有一个问题,我很困惑。我有一个使用mysqli查询动态生成的选择框:
$result = mysqli_query($db, "SELECT * FROM `users` WHERE `user_id` > 0");
echo '<html><form name="contacts" method="post"><select name="contacts"><option value="Contact list" onchange="func()">Contact List</option>';
while($row = $result->fetch_assoc()){
echo '<option value = '.$row['user_name'].'>'.$row['user_name'] . '</option>';
}
echo '</select></form>';
我是AJAX的新手,但我需要使用jquery和ajax将this.value变量传递给php变量,以便在以后的查询中使用。
这是我的剧本(大多数是在网上找到的):
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
$("#contacts").change(function() {
//get the selected value
var selectedValue = this.value;
//make the ajax call
$.ajax({
url: 'function.php',
type: 'POST',
data: {option : selectedValue},
success: function() {
console.log("Data sent!");
}
});
});
</script>
现在,当我单击选择框中的值时,没有任何反应。没有警告或错误等。
请帮帮我。
P.S。 function.php确实存在。它现在只是一个简单的回声(用于测试目的)
更新:这里是FUNCION.PHP:
<?php
/*$val = $_REQUEST['selectedValue'];
echo $val;*/
function function(){
$val = $_REQUEST['selectedValue'];
echo $val;
}
?>
更新:谢谢大家的帮助。我现在已经开始工作,因为chrome inspect的网络部分显示了被请求的function.php但是我仍然没有得到回声(我使用外部.js文件来使其工作)。我的J查询功能也很成功(成功功能回到控制台)
答案 0 :(得分:6)
您的选择框没有ID,而您正在观看change
$("#contacts")
事件。
变化:
echo '<html><form name="contacts" method="post"><select name="contacts"><option value="Contact list" onchange="func()">Contact List</option>';
为:
echo '<html><form name="contacts" method="post"><select name="contacts" id="contacts"><option value="Contact list">Contact List</option>';
^^^^^^^^^^^^^ here
你也只需要一个事件处理程序,所以我删除了一个似乎什么都不做的内联函数。
编辑:如果使用ajax创建了select,则需要事件委派:
$("body").on('change', '#contacts', function() {
^^^^ for example
编辑2 :您的变量名为$_REQUEST['option']
,而不是$_REQUEST['selectedValue']
。你也没有调用你的-badly named - 函数,因此你不会从php获得任何输出,除了像Parse error: syntax error, unexpected 'function' ...
这样的错误。
答案 1 :(得分:3)
在select标签中调用onchange功能,如下所示
echo '<form name="contacts" method="post"><select name="contacts" onchange="func(this.value)"><option value="Contact list">Contact List</option></form>';
Javascript src应该在html页面的头部。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
在html的头部添加上面的一个。更新javacript如下
由于onchange函数在select标签本身中被调用,因此下面就足够了
<script>
function func(selectedValue)
{
//make the ajax call
$.ajax({
url: 'function.php',
type: 'POST',
data: {option : selectedValue},
success: function() {
console.log("Data sent!");
}
});
}
</script>
更新了php:如果你想从函数中获取值,你必须调用它。否则,简单地说,您可以按以下方式进行
<?php
if($_REQUEST['option'])
{
$val=$_REQUEST['option'];
echo $val;
}
?>
答案 2 :(得分:0)
在.php文件中,首先接收它 -
$val = $_REQUEST['selectedValue'];
echo $val;
答案 3 :(得分:0)
在php代码中为select标记和
设置一个id属性请不要在表单中使用相同的name属性值并选择标签!!
答案 4 :(得分:0)
只需将您的功能更改为'body'.on,并为您的元素添加“联系人”ID
$("body").on('change', '#contacts', function() {
//get the selected value
var selectedValue = $(this).val();
//make the ajax call
$.ajax({
url: 'function.php',
type: 'POST',
data: {option : selectedValue},
success: function() {
console.log("Data sent!");
}
});
});