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

AngularJS中$http.get向PHP传数据失败,提示cart键未定义

问题说明

测试功能时,点击按钮可将对象推入数组,再通过AngularJS的$http.get方法把数组发送到PHP文件——点击按钮能正常收到响应,但直接打开PHP文件时,会出现“cart键未定义”的错误,希望能正常打印cart的值,寻求解决办法。

相关代码

主文件(test.php)

<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
</head>
<body ng-app="testapp" ng-controller="testctrl">
    <button ng-click="senddata()">Send</button>
    <a href="http://localhost/proj/process_cart.php">Click</a>
    <script>
        var app = angular.module("testapp", []);
        app.controller("testctrl", function($scope, $http) {
            $scope.cart = [];
            $scope.senddata = function() {
                $scope.cart.push({id: 1, name: "Aaryan"});
                var url = "http://localhost/proj/process_cart.php";
                var data = { cart: JSON.stringify($scope.cart) };
                $http.get(url, { params: data })
                .then(function(response) {
                    alert(response.data);
                }, function(error) {
                    alert('Error: ' + error.data);
                });
            };
        });
    </script>
</body>
</html>

处理文件(process_cart.php)

<?php
$cart = json_decode($_GET['cart'], true);

if ($cart) {
    echo "Received cart data:\n";
    print_r($cart);
} else {
    echo "Error: No cart data received.";
}?>
解决办法

直接打开PHP文件或点击页面里的<a>标签时,浏览器发起的GET请求没有携带cart参数,导致$_GET['cart']触发“未定义”错误,可通过以下方式修复:

1. 给PHP添加参数存在性检查

修改process_cart.php,先判断cart参数是否存在,再处理数据:

<?php
if(isset($_GET['cart'])){
    $cart = json_decode($_GET['cart'], true);
    if ($cart) {
        echo "Received cart data:\n";
        print_r($cart);
    } else {
        echo "Error: Invalid cart data format.";
    }
} else {
    echo "Error: No cart parameter provided.";
}
?>

2. 让页面链接携带cart参数

如果希望点击<a>标签也能传递cart数据,可使用AngularJS的ng-href和json过滤器动态生成带参数的链接:

<a ng-href="http://localhost/proj/process_cart.php?cart={{cart | json}}">Click</a>

这样点击链接时,会自动把当前$scope.cart的JSON字符串作为cart参数传递给PHP文件。

内容的提问来源于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.26 10:02:25