Angular JS:在HTTP服务(POST)中传递输入参数



我是Angular JS的新手,一直陷入这个问题。

<body class="homepage" ng-app="angularApp">
    <div ng-controller="myCtrl">
        <ul>
            @foreach ($fruits as $fruit) 
            <!-- looping -->
            <input type="hidden" value="{{$fruit->id}}" ng-model="testParameter">
            <button  ng-click="testClick(testParameter)" class="adding_item_to_cart">Add to Cart</button>
            @endforeach
        </ul>
        <p ng-bind="testBind"></p>
    </div>
<script type="text/javascript">
    var angularApp = angular.module('angularApp', []);
    angularApp.controller('myCtrl', function($scope, $http) {
        $scope.testClick = function(id) {
             $http({
                method : "POST",
                url : "/fruits/add/".id
             }).then(function addSucces(response) {
                $scope.testBind =response.data;
             }, function addError(response) {
                $scope.testBind = "Error!";
             });
        }
     });
</script>
</body>

我一直在尝试做的是在调用testClick以运行 POST 方法时发送一个参数作为 HTTP 请求的输入值,基于选择了fruit(即 for 循环的内容)。(在此示例中,我尝试运行Laravel 5.2的Route方法)。

到目前为止,我在Stackoverflow上找到了一些帖子,这些帖子显然与此任务有关。上面的代码按照这些帖子的建议进行了多次修改。

确实知道这会导致错误,但我对实际错误是什么以及我需要做什么一无所知。

任何建议将不胜感激!

这个:

url : "/fruits/add/".id

应该是这样的:

url : "/fruits/add/" + id

你说的是"gimme 字符串的 id 属性"——那会起作用!

在 url 键$http中,连接不正确,请参阅以下固定代码:

            $http({
                method : "POST",
                url : "/fruits/add/"+ id
             }).then(function addSucces(response) {
                $scope.testBind =response.data;
             }, function addError(response) {
                $scope.testBind = "Error!";
            });

@YMD - 不确定这现在是否如此相关,您的问题现在可能已经回答了,但由于您没有将任何标记为正确答案,我正在回应这个。如果它回答了您的问题,请将其标记为正确答案。

控制器中未定义 testParameter。 要么在控制器中使用$scope - $scope.testParameter=" ";或者将其绑定到某个对象并使用object.testParameter

除非 View 将变量传递给控制器,

否则控制器无法知道它,因此 testParameter 仍然只是一个 View 范围的变量,没有为其分配任何值,因此未定义

最新更新