在Javascript上调用PHP函数Onchange
我想调用php中的一个函数onchange在html的select中,这是如何做到的 html代码在Javascript上调用PHP函数Onchange,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我想调用php中的一个函数onchange在html的select中,这是如何做到的 html代码 <div class="col-sm-4 form-group"> <label for="c_city">City</label> <select class="form-control" id="c_city" onchange="<?php getArea(); ?>"> <option value
<div class="col-sm-4 form-group">
<label for="c_city">City</label>
<select class="form-control" id="c_city" onchange="<?php getArea(); ?>">
<option value="">Select City Name</option>
<!--populate value using php-->
<?php
$stmt ="SELECT * FROM Cities";
foreach ($con->query($stmt) as $row) {
?>
<option value="<?php echo $row['City_ID'];?>"><?php echo $row['City_Name'];?></option>
<?php
}
?>
</select>
</div>
这样做不行,你需要这样做。你的想法行不通,因为onchange是javascript的保留函数,而不是php的。如果您执行代码,当select更改时,only将在javascript中运行您的getArea echo,结果没有看到您期望的结果。我在这里做的是将一个js函数和一个ajax调用放在php代码中,帮助您按照自己的意愿检索区域。很明显,就像我下面的评论一样,将绑定放入html代码不是一个好方法,因为当代码开始增长时,维护变得非常昂贵-为了解决这个问题,我使用了将一些侦听器绑定到对象的方法,但您也可以使用 但是,如果您真的需要javascript,那么分析它是很重要的。如果按照代码建议只获取一个值,那么提交的表单就更简单
<div class="col-sm-4 form-group">
<label for="c_city">City</label>
<select class="form-control" id="c_city" onchange="getArea()"> //onchange is not a good practice in the html
<option value="">Select City Name</option>
<!--populate value using php-->
<?php
$stmt ="SELECT * FROM Cities";
foreach ($con->query($stmt) as $row) {
?>
<option value="<?php echo $row['City_ID'];?>"><?php echo $row['City_Name'];?></option>
<?php
}
?>
</select>
</div>
<script>
//that way with onchange in HTML
function getArea(){
var city = $('#c_city option:selected').val();
$.get( "yourphpcode.php?action=getArea&c_city=" + city, function( data ) {
alert( data );
});
}
//or THAT WAY
$('#c_city').on('change', function(){
var city = $(this).find('option:selected').val();
$.get( "yourphpcode.php?action=getArea&c_city=" + city, function( data ) {
alert( data );
});
});
</script>
//yourphpcode.php
function getArea()
{
if(isset($_GET['c_city']))
{
$c_city = $_GET['c_city'];
echo json_encode($c_city);
}
}
if (isset($_GET['action']) && $_GET['action'] == 'getArea'){
getArea();
}
您可以尝试使用ajax调用php脚本并将结果返回到javascript 例如,在html页面中:
<div class="col-sm-4 form-group">
<label for="c_city">City</label>
<select class="form-control" id="c_city" onchange="getArea()">
<option value="">Select City Name</option>
<!--populate value using php-->
<?php
$stmt ="SELECT * FROM Cities";
foreach ($con->query($stmt) as $row) {
?>
<option value="<?php echo $row['City_ID'];?>"><?php echo $row['City_Name'];?></option>
<?php
}
?>
</select>
</div>
<script>
function getArea(){
var c_city = $('#c_city').val();
$.ajax({
type: 'POST',
url: "get_area.php",
data: {c_city:c_city},
success: function(result){
//do something here with return value like alert
alert(result)
}
})
}
</script>
让我知道它是否有帮助,或者如果您发现问题,请使用jquery ajax此处您不能这样做,PHP在服务器端、JS客户端执行,因此您的JS需要向您的服务器发送请求,服务器调用函数并将答案返回给您的JS,ajax是您的朋友,如果使用jqueryFirst,您可能需要了解服务器端和客户端的区别:做还是不做。没有尝试。一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的访客。我有两个combo boxesCity&Area的注册表格,他们从数据库中读取,他们相互依赖,当选择一个特定的城市时,另一个组合框中会充满它的所有区域,“我的代码行吗?”还是有更好的方法?@NewDeveloper,可以。如果数据来自php或mysql数据库,则需要ajax来填充第二个组合框
<div class="col-sm-4 form-group">
<label for="c_city">City</label>
<select class="form-control" id="c_city" onchange="getArea()">
<option value="">Select City Name</option>
<!--populate value using php-->
<?php
$stmt ="SELECT * FROM Cities";
foreach ($con->query($stmt) as $row) {
?>
<option value="<?php echo $row['City_ID'];?>"><?php echo $row['City_Name'];?></option>
<?php
}
?>
</select>
</div>
<script>
function getArea(){
var c_city = $('#c_city').val();
$.ajax({
type: 'POST',
url: "get_area.php",
data: {c_city:c_city},
success: function(result){
//do something here with return value like alert
alert(result)
}
})
}
</script>
if(isset($_POST['c_city']))
{
$c_city = $_POST['c_city'];
echo $c_city;
}