angular js使用post方法将空数据发送到php

Posted

技术标签:

【中文标题】angular js使用post方法将空数据发送到php【英文标题】:angular js sending empty data to php using post method 【发布时间】:2017-12-07 02:59:31 【问题描述】:

我正在制作一个测试应用程序来测试角度和 php 数据传输。 但是 Angular 是通过 post 方法发送数据,但 php 不接受数据

<!DOCTYPE html>
<html>
<head>
  <title>Test</title>
    <script 

src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js">
    </script>
</head>
<body ng-app="myApp">
<div ng-controller="myctrl">
 <form ng-submit="insert()">
   <input type="text" ng-model="name" name="name" placeholder="name">
   <input type="age" ng-model="age" name="age" placeholder="age">
   <button type="submit">Submit</button>
 </form>
</div>
<script type="text/javascript">
var app = angular.module('myApp',[]);
app.controller('myctrl',function($scope,$http)    


    $scope.insert=function()    

        $http.post("test.php", 
            'name':$scope.name,
            'age':$scope.age
        ).then(function(response)
                console.log(response);
            ,function(error)
                alert("Sorry! Data Couldn't be inserted!");
                console.error(error);

            );
        
    );
 </script>
</body>
</html>

这是html代码 php代码是

<?php


    $data = json_decode(file_get_contents('php://input'));
    $place=$data->name;
    $image=$data->age;
    echo $place;
    echo $image;
    echo "string";
?>

当我访问这些名称和年龄时,它给出的错误为

"注意:尝试在 5 行的 C:\xampp\htdocs\test\test.php 中获取非对象的属性通知:试图在C:\xampp\htdocs\test\test.php中获取非对象属性上线6 字符串”

但是 Angular 正在发送数据 数据:对象 年龄:“2” 名称:“abcd” 无法确定问题出在哪里。

【问题讨论】:

我不是 100% 确定,但不应该是 $name = $_POST['name']; $age = $_POST['年龄']; .... "注意:未定义索引:C:\xampp\htdocs\test\test.php 中的名称 行>5注意:未定义索引:C:\xampp\htdocs\test\test.php上线6字符串" 现在收到此错误。这个方法也试过了。 How do I enable cross-origin resource sharing on XAMPP?的可能重复 【参考方案1】:

向 php 发出正确的 post 请求的一种方法是通过 $httpParamSerializerJQLike,

这样你就可以发这样的帖子了:

var data = 
        'name':$scope.name,
        'age':$scope.age
    ;
var req = 
      method : "POST",
      url: "http://yourUrl",
      data: $httpParamSerializerJQLike(data),
      headers: 
        'Content-Type': "application/x-www-form-urlencoded"
      
    ;
 $http(req).then(function(resp)//success).catch(function(error)//error);

【讨论】:

OP 正在使用 json_decode(file_get_contents('php://input')) 解码内容类型 application/json ReferenceError: $httpParamSerializerJQLike 未定义 你必须把它注入到控制器中,在$http旁边,app.controller('myctrl',function($scope,$http, $httpParamSerializerJQLike)

以上是关于angular js使用post方法将空数据发送到php的主要内容,如果未能解决你的问题,请参考以下文章

jquery ajax后混合数组对象将空数组发送到php

通过 POST 从 Angular 向 Springboot 发送数据

将空参数从 Ajax 发送到控制器

将 JSON 发送到 web 方法?

从 Angular 2 客户端到 Node.js 服务器的 HTTP POST 请求

Angular 2 http post 作为空对象或在关键端发送