【问题标题】:Angular $http post not posting variable correctly for PHPAngular $http post没有为PHP正确发布变量
【发布时间】:2015-02-05 19:33:09
【问题描述】:

我的应用程序中有一个位于api/add 的PHP 服务,您可以通过POST 传递rqnamerq 告诉服务要执行什么功能,所以在我的示例中定义了addCity,并将一个城市插入到数据库中,name 是城市的名称。

所以,话虽如此,这是我的角度代码。我在上面用ngRoute 定义了一个角度模块。

whereApp.controller('AddCityCtrl', function($scope, $http) {

  $scope.addCity = function() {

    $http({
        method: "POST",
        url: '/api/add/',
        data: { rq:'addCity', name: $scope.name },
        headers: {'Content-Type': 'application/x-www-form-urlencoded'}
        }).success(function (data, status, headers, config) {
            console.log(data); 
        });

    /*
        $.ajax({
            url: "/api/add/",
            type: "POST",
            data: { rq: 'addCity', name: $scope.name },
            dataType: "json"
        })
        .success(function(data) {
            console.log(data);    
        });
    */
  }
});

这就是问题所在。 ajax 请求(被注释掉的 jQuery 样式)有效。我想使用棱角分明的风格,因为,这就是我正在使用的,也是我想要了解更多的东西。 jQuery ajax 调用返回了我从服务器端获得的成功消息,并且 $http 方法说未定义 rq 变量,我通过 $_POST['rq'] 访问该变量。

我已经在 Google 上进行了一些研究,但到目前为止,我只是想出了添加 headers: {'Content-Type': 'application/x-www-form-urlencoded'} 就像 this post 说的那样。

谁能告诉我这两个 ajax 调用之间有什么区别(或者是否还有其他我没有考虑过的东西)?

【问题讨论】:

    标签: php jquery ajax angularjs


    【解决方案1】:

    由于它是在 php 中发送的 json 数据,因此您无法通过简单的 $_POST 获取它,您需要执行此类操作才能获取此发布的数据

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

    这里先获取数据,然后将其从 json 解码为普通对象

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-06
      • 2012-05-30
      • 1970-01-01
      • 2011-07-21
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多