我想在html的onchange
中调用php 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="">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;
}
}
答案 0 :(得分:0)
这不能通过这种方式完成,你需要AJAX。你的想法无法工作,因为onchange是javascript的保留函数,而不是php。如果执行代码,当select更改时,只会将getArea()echo运行到javascript中,导致无法按预期查看。我在这里做的是将一个带有ajax调用的js函数放到你的php代码中,帮助你按照自己的意愿检索你的区域。显然我喜欢下面的评论,这不是将绑定放入html代码的好方法,因为当代码开始增长时,维护变得非常昂贵 - 为了解决这个问题,我使用on jquery function将一些监听器绑定到一个对象,但您也可以使用change。
但重要的是要分析你是否真的需要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();
}
答案 1 :(得分:0)
您可以尝试使用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;
}
让我知道它是否有帮助,或者如果您发现问题