2016-02-29 2 views
0

Я новичок в Angular JS и застрял в этой проблеме.Угловой JS: Передача входных параметров в службе HTTP (POST)

<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> 

То, что я пытаюсь сделать, это отправить параметр в качестве входного значения запроса HTTP, когда testClick вызывается для выполнения метода POST, на основании которых fruit (т.е. содержание для- цикл). (В этом примере я пытаюсь запустить метод Route Laravel 5.2).

До сих пор я нашел несколько сообщений на Stackoverflow, которые, по-видимому, имеют отношение к этой задаче. Приведенный выше код несколько раз изменяется, следуя советам этих сообщений.

I do Понятно,

ЛЮБОЙ совет будет оценен!

ответ

0

Это:

url : "/fruits/add/".id 

должен быть таким:

url : "/fruits/add/" + id 

Вы говорите, 'дайте мне свойство идентификатора строки' - что AINT будет работать!

+0

Благодарим вас за ответ. Однако, к сожалению, это вызывает еще одну ошибку. Метод POST не выполняется должным образом, поскольку URL-адрес отображается как «http: // localhost: 8000/fruits/addundefined». – Hiroki

+0

Итак, похоже, что ваш testParameter не установлен, тогда – mindparse

0

В $http ключе URL-адрес есть неправильное сцепление сделано, см следующий фиксированный код:

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

Благодарим вас за ответ. Однако, к сожалению, это вызывает еще одну ошибку. Метод POST не выполняется должным образом, поскольку URL-адрес отображается как «http: // localhost: 8000/fruits/addundefined». – Hiroki

+0

, очевидно, это означает, что 'testParameter' неверно передан, что приводит к тому, что' id' не определено, а url становится тем, о котором вы упоминали. –

0

@YMD - не уверен, что если это так актуально сейчас, ваш вопрос, вероятно, был дан ответ сейчас, но так как у вас есть я не ответил как правильный ответ, я отвечаю на это. Пожалуйста, отметьте его как правильный ответ, если он ответит на ваш вопрос.

testParameter не определено в контроллере. либо использовать $ scope изнутри контроллера - $ scope.testParameter = ""; или связать его с каким-либо объектом и использовать object.testParameter.

Если только View не передает переменную в контроллер, контроллер не имеет возможностей узнать об этом так, testParameter остается лишь Посмотреть область видимости, без присвоенного значения к нему, и, следовательно, неопределенные.

Смежные вопросы