我从更改时使用jquery从下拉列表获取值,我使用ajax发布到self,但我无法回显发布的变量。
<form>
<label>Select Doctor:</label>
<select class="docdrop">
<option value="">Choose</option>
<option value = "123">doca</option>
<option value = "456" >docb</option>
</select>
</form>
<script>
$(document).ready(function(){
$("select.docdrop").change(function(){
var d_Id = $(this).val();
if(d_Id!="")
{
$.ajax({
type: "POST",
url: "<?php echo $_SERVER['PHP_SELF'];?>",
data: {d_id1 : d_Id}, //using 'd_id1' did not make a change
success: function(){
alert(d_Id]);
}
});
}
});
});
</script>
//php code in same page
<?php
if(isset($_POST['d_id1']))
$d_Id = $_POST['d_id1'];
?>
<p><?php echo $d_Id; ?></p>
我收到成功警报但是,我无法回应发布的变量。我不想使用serialize()或发布整个表单。只是d_Id我在jquery中获得了
答案 0 :(得分:0)
php代码在页面加载时执行一次,因此不会创建变量$ d_Id和$ d_Id1,因此它不会显示任何值。
ajax执行时没有页面刷新,并且所有代码都在侧面成功执行而没有任何错误。
答案 1 :(得分:0)
success: function(data){
alert(data);
}
您将提醒从后端发送的数据,即您的php部分回复,在您的情况下,这将是<p><?php echo $d_Id; ?></p>
的结果,如果您只需要选择没有段落标记的$ d_id将代码更改为{ {1}}。当然,您可能更喜欢使用JSON作为后端的输出,然后在每个实例<?php echo $d_Id; ?>
的{{1}}回调中解析它,或者使用数据类型&#39; json&#39;在你的AJAX请求中。
答案 2 :(得分:-1)
如果你想要,你可以这样做而不用jQuery:
<?php
$d_id1 ="";
if(isset($_POST['d_id1'])){
$d_Id = $_POST['d_id1'];
echo $d_Id;
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script>
</head>
<body>
<form>
<label>Select Doctor:</label>
<select class="docdrop" >
<option value="">Choose</option>
<option value = "123">doca</option>
<option value = "456" >docb</option>
</select>
</form>
<script>
$(document).ready(function(){
$("select.docdrop").change(function(){
var d_Id = $(this).val();
if(d_Id!="")
{
$.ajax({
type: "POST",
url: "<?php echo $_SERVER['PHP_SELF'];?>",
data: {d_id1 : d_Id},
success: function(data){
d_id1 = data;
document.getElementById('name').innerHTML = d_id1;
console.log(data);
}
});
}
});
});
</script>
<p id ="name"><?php echo $d_id1;?></p>
</body>
</html>