[英]Calling PHP function Onchange on Javascript
我想在html select
中的php onchange
中调用一个函数,这怎么办?
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="">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>
PHP函数页面
function getArea()
{
if(isset($_GET['c_city']))
{
$c_city = $_GET['c_city'];
echo $c_city;
}
}
那样就无法做到这一点,您需要AJAX 。 您的想法行不通,因为onchange是javascript(而非php)的保留函数。 如果执行代码,则选择更改时,只会将您的getArea()回显运行到javascript中,从而导致看不到预期的结果。 我在这里所做的是将js函数与ajax调用结合到您的php代码中,从而帮助您根据需要检索区域。 显然,就像下面的评论一样,这不是将绑定放入html代码的好方法,因为当代码开始增长时,维护变得非常昂贵-为解决此问题,我在jquery函数上使用了将某些侦听器绑定到对象的方法,但是您可以使用也可以更改 。
但是,重要的是分析您是否真的需要在那里的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>
然后在您的php脚本中,您可以操纵从javascript接收的值
if(isset($_POST['c_city']))
{
$c_city = $_POST['c_city'];
echo $c_city;
}
让我知道这是否有帮助或您发现问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.