【问题标题】:RouteParams in AngularJSAngularJS 中的路由参数
【发布时间】:2015-05-19 03:19:36
【问题描述】:

我正在尝试将 routeParam 传递给 Angular 控制器中的 $http.post,但我似乎没有正确传递值。这是我下面的内容。没有正确使用 $routeParams 吗?使用 $scope.event_id = $routeParams.eventId; 时,部分页面会正确呈现 Event: {{event_id}} 或 Event: 5 例如。

我需要 $http.post 是 php/getItem.php?itemID=5

传递 event_id 的 HTML:

<a href="#/{{event.event_id}}">{{event.event_name}}</a>

路由提供者:

var pvApp = angular.module('pvApp', ['ngRoute']);

// configure our routes
pvApp.config(function($routeProvider) {
    $routeProvider

        // route for the home page
        .when('/', {
            templateUrl : 'pages/home.html',
            controller  : 'mainController'
        })

        .when('/:eventId', {
            templateUrl : 'pages/event_detail.html',
            controller  : 'eventController'
        });

});

控制者:

pvApp.controller('eventController', function($scope, $http, $routeParams) {
    // $scope.event_id = $routeParams.eventId;

      $http.post("php/getItem.php?itemID="+$routeParams.eventId).success(function(data){
            $scope.items = data;
           });

});

部分页面:

<div class="container">
    <div class="row">
        <div class="col-lg-12">
            <h2>Event: {{event_id}}</h2>
        </div>
    </div>
</div>

【问题讨论】:

  • 你能解释一下问题是什么吗?检查浏览器的 Network 控制台以查看 POST 请求是否正确以及响应是什么。您确定要使用 POST 吗?您似乎没有传递任何数据
  • 网络控制台显示getItem.php?itemID=5 已列出,所以我认为我的问题在于&lt;h2&gt;Event: {{event_id}}&lt;/h2&gt; 等输出,也许这是格式不正确?
  • ...响应是什么样的?为什么要使用 POST?
  • 响应正是我需要的——来自 MySQL 的 JSON。更改为 GET 和相同的响应。使用 $item_id = $_GET['itemID'];when 将其传递给 getItem.php
  • 那么问题出在哪里?您似乎没有在任何地方使用$scope.items。如果您将console.log(data) 放入您的success 回调中,记录的值是否正确/是否已记录?

标签: javascript angularjs routes


【解决方案1】:

第一次检查

console.log($routeParams.eventId);

在控制台上正确打印 event_id。

那么

请注意,您使用的是 POST 请求,但您的 url 类似于 GET 请求。

像下面这样更改请求并尝试,

 $http({
    url: 'php/getItem.php',
    method: "POST",
    data: { itemID : $routeParams.eventId },        
}).succes...

 $http.post('php/getItem.php', { itemID:$routeParams.eventId }).success...

这里你可以获取php中的数据,

$data = json_decode(file_get_contents("php://input"));

$data->itemID // to access name

 $http({
    url: 'php/getItem.php',
    method: "POST",
    data: { itemID : $routeParams.eventId },   
    headers: {'Content-Type': 'application/x-www-form-urlencoded'},     
}).succes...

在 PHP 中,

$name= $_POST['itemID'];

也许这个post 会帮助你。

【讨论】:

  • 这会将itemID=5 放入 POST 请求正文中。 OP 似乎表明它应该在 URL 中
猜你喜欢
  • 1970-01-01
  • 2017-02-10
  • 1970-01-01
  • 2013-03-25
  • 2016-08-22
  • 2017-03-16
  • 2023-04-01
  • 1970-01-01
相关资源
最近更新 更多