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

使用AngularJS的$http服务向PHP文件POST传值失败,求解决

问题解决:AngularJS $http.post 传参PHP无法获取的问题

问题根源在于:AngularJS的$http.post默认会把数据以JSON格式发送,而PHP的$_POST只能解析application/x-www-form-urlencoded类型的表单编码数据,所以导致bname和bprice参数无法被识别。

下面提供两种直接可行的解决办法:

办法一:修改前端,发送表单编码数据

在AngularJS代码中,使用$httpParamSerializerJQLike序列化数据,并设置正确的请求头,让PHP能通过$_POST正常读取参数:

// 注意要在控制器依赖中注入$httpParamSerializerJQLike
$scope.executefunc = function(name, price){
    var data = {
        action: 'setcart',
        bname: name,
        bprice: price
    };

    $http({
        method: 'POST',
        url: 'cart.php',
        data: $httpParamSerializerJQLike(data),
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        }
    }).then(function(response){
        alert(response.data);
    }, function(err){
        console.error("Error:", err);
    });
};

办法二:修改PHP,直接读取JSON数据

如果不想改动前端代码,直接在PHP里读取原始的JSON请求体:

<?php
session_start();
// 读取请求中的原始JSON数据并解码为数组
$rawData = file_get_contents('php://input');
$requestData = json_decode($rawData, true);

// 先判断参数是否存在,避免报错
if(isset($requestData['bname']) && isset($requestData['bprice'])){
    $name = $requestData['bname'];
    $price = $requestData['bprice'];
    echo $name;
    echo $price;
} else {
    echo "参数缺失";
}
?>

额外验证步骤

  • 先确认前端调用executefunc时,name和price参数确实有值:可以在函数开头加console.log(name, price),打开浏览器控制台查看输出。
  • 检查网络请求:按F12打开开发者工具,切换到Network标签,查看POST请求的Request Payload,确认里面包含bname和bprice字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:53:14