AJAX问题:如何将JavaScript变量转为PHP变量用于SQL查询?
问题分析与修复方案
你的代码里有几个关键问题导致无法获取到期望的结果,我来帮你逐一排查并修复:
1. AJAX 数据键名与 PHP 接收不匹配
你在AJAX里传递的是{duration: xo},也就是键名是duration,但PHP里却用$_POST['xo']去接收,这肯定拿不到值,得把PHP里的接收键名改成duration。
2. PHP 没有正确输出响应内容
PHP里的return $duration不会把内容输出到HTTP响应里,AJAX接收不到返回值,应该用echo $duration来输出内容。
3. 回调函数里错误混用了PHP代码
success回调里的<?php echo @$duration;?>是在页面首次加载时就执行的,不是AJAX请求完成后的值,你应该用AJAX返回的data参数来更新页面内容。
修复后的代码:
前端JS部分:
function myFunction(){ var xo = document.getElementById("dep_ID").value; document.getElementById("demo").innerHTML = "You selected: " + xo; $.ajax({ url: 'insert.php', data: {duration: xo}, type: 'POST', success: function(data) { alert(data); // 这里用AJAX返回的data,而不是PHP变量 document.getElementById("demo").innerHTML = "You selected: " + data; } }); }
insert.php部分:
<?php // 注意键名是duration,不是xo $duration = $_POST['duration']; // 用echo输出内容,AJAX才能接收到 echo $duration; ?>
另外,为了让代码更健壮,你可以在PHP里增加参数存在性检查,避免出现报错:
<?php if(isset($_POST['duration'])){ $duration = $_POST['duration']; echo $duration; } else { echo "参数缺失"; } ?>
这样修改后,当你选择下拉框选项时,AJAX会把选中的值传给PHP,PHP输出该值后,前端success回调就能接收到并更新页面,正常显示你选中的dep_ID值了。
内容的提问来源于stack exchange,提问作者shyzza
相关产品推荐
相关产品推荐

