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

为什么jQuery AJAX发送GET请求时PHP端$_GET收到的值为空字符串?

问题解决方案

核心问题原因

你当前的AJAX代码没有将序列化后的预订数据绑定到reservationData参数名下,直接把JSON字符串传给了data参数,因此后端无法通过$_GET['reservationData']获取到对应值。

修复方案(符合你要保留reservationData作为参数名的需求)

修改AJAX请求的data字段,将JSON字符串作为值绑定到指定参数名上即可,修改后代码如下:

var reservationData = {
  thename: "Maja_Bj",
  themovie: "1",
  theday: "Saturday"
}
console.log(reservationData);
debugger;
confirmReservation.on('click', function(){

  $.ajax({
    url: '/drupal/movie-reservation',
    type: 'GET',
    cache: false,
    // 仅修改这一行即可:把JSON字符串绑定到reservationData参数名
    data: {reservationData: JSON.stringify(reservationData)},
    success: function(data){
      if(data.status == 'success'){
        alert("Success! Your information has been saved!");
      }else if(data.status == 'error'){
        alert("Error! Please try again...");
      }
    }
  });
});

后端PHP接收方式

在你的Drupal接口中用以下方式解析参数即可拿到对应字段:

// 先获取GET参数里的reservationData字符串,再转成数组
$reservationData = json_decode($_GET['reservationData'], true);
// 直接读取字段即可
$thename = $reservationData['thename'];
$themovie = $reservationData['themovie'];
$theday = $reservationData['theday'];

可选优化方案

如果你不想在后端做JSON解析,也可以直接把reservationData对象传给data参数,jQuery会自动把对象序列化成URL参数,后端直接通过$_GET['thename']、$_GET['themovie']就能单独拿到每个字段,不需要额外解析:

// data字段改成直接传对象即可
data: reservationData,

注意:如果提交的是用户存储类数据,更推荐把请求type改成POST,避免GET请求长度限制导致参数丢失,同时更符合数据提交的HTTP语义。

内容的提问来源于stack exchange,提问作者MajaB

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:06:04