【问题标题】:POST array from angular to phpPOST数组从角度到php
【发布时间】:2017-08-11 19:35:39
【问题描述】:

我正在发布一个从 Angular 到 PHP 的数组。我发送的数组是这样的[92,70,86,62,75,84,95] 但在 php 中它变成了这样 - “[92,70,86,62,75,84,95]”。

我预期的 php 输出是

{ 用户 ID:假, 数据:[92,70,86,62,75,84,95] } 我得到的输出是 { 用户 ID:假, 数据:“[92,70,86,62,75,84,95]” }

从角度发布数据的代码是

$scope.data = [92,70,86,62,75,84,95];
 $http({
         method: 'POST',
         url: 'http://localhost/learn_php/api/api_set_data/',
         data: $scope.data,
         headers: {
             'Content-Type': 'application/x-www-form-urlencoded'
           }
        })
        .success(function(data) {
           console.log(data);
        });

php中的代码是

public function api_set_data(){

    $array['user_id']  = $this->session->userdata('user_id');
    $array['data'] =  file_get_contents("php://input");

    $serializedData = serialize($array);
    file_put_contents(APPPATH."assets/get_values.txt", $serializedData);

    echo json_encode($array);        
  }

【问题讨论】:

  • application/x-www-form-urlencoded 不能处理任何复杂的结构,只能处理键值字符串对。考虑改用application/json。无论哪种方式,您都需要在您的 PHP 代码中 json_decode() file_get_contents() 的结果。
  • 但它显示以下错误“XMLHttpRequest 无法加载 localhost/learn_php/api/api_set_data。在预检响应中 Access-Control-Allow-Headers 不允许请求标头字段 Content-Type。”
  • 所以在服务器端配置你的“Access-Control-Allow-Headers”
  • @UsamaIshaque 无论哪种方式,您都应该得到该错误。这表明该表单是从 localhost 以外的其他地方提供的。
  • 解决了标头问题以及使用 json_decode 而不是 json_encode 但仍然得到相同的输出 { user_id: false, data: "[73,66,75,70,94,100,60,89, 69,79]" }

标签: php angularjs arrays json


【解决方案1】:

分别使用 JSON.stringify 和 json_decode

Javascript

data: JSON.stringify($scope.data)

PHP

$array['data'] =  json_decode(file_get_contents("php://input"), true);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    相关资源
    最近更新 更多