You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:43:55