【问题标题】:PHP $_POST empty during AJAX post requestPHP $_POST 在 AJAX 发布请求期间为空
【发布时间】:2016-08-29 16:37:49
【问题描述】:

目标:序列化数据,使用 AJAX 在 HTTP POST 请求中发送它们,在 PHP 中处理数据(并回答)

问题: PHP $_POST 变量似乎为空

JS/AJAX

var postData = [cmd, data];
alert(postData = JSON.stringify(postData));

$.ajax({
   url: "./backendTag.php",
   type: "post",
   data: postData,
   dataType: 'json',
   success: function (response) {
      alert(response); // Empty
      //logToServerConsole(JSON.parse(response));
   },
   error: function(jqXHR, textStatus, errorThrown) {
      logToServerConsole("E3"); // Communication Error
      console.log(textStatus, errorThrown);
   }
});

PHP

<?php echo json_encode($_POST);

【问题讨论】:

    标签: javascript php jquery ajax post


    【解决方案1】:

    同样的原因可能是因为您没有在 javascript 中正确发布。在我添加代码之前,让我添加一些关于如何在这些情况下进行调试的提示。

    首先,您检查请求的格式是否正确。在浏览器开发工具中检查网络。

    第二种方法是在 $_POST 上使用 var_dump 列出所有的 post 参数并检查它们是否在 PHP 中被接收

    现在就代码而言

    这里是javascript

    $.ajax({
      method: "POST",
      url: "url.php",
      data: { name: "John Doe", age: "19" }
    }).done(function( msg ) {
      alert(msg);
    });
    

    在 php 中你可以简单地检查使用

    <?php
    print $_POST["name"];
    ?>
    

    这将完美地工作。注意javascript中的数据是一个列表,而你写的似乎是json字符串

    【讨论】:

      【解决方案2】:

      显然我们不能在序列化他之后直接传递一个数组。下面的代码解决了这个问题。 (拆分数组)

      data = JSON.stringify(data);
      var JSONdata = {"cmd" : cmd, "data" : data};
      
      $.ajax({
         url: "./backendTag.php",
         type: "post",
         data: JSONata,
         dataType: 'json',
      
         /* Handlers hidden*/
      });
      

      【讨论】:

      • 问题是:一个更大的数组是怎么回事,我们必须做一个循环来格式化它吗?
      • 为什么必须对数据进行字符串化?
      【解决方案3】:

      JSON 内容不会被解析为 $_POST 全局变量。如果您想联系他们,请尝试从 php://input 获取:

      file_get_contents('php://input')
      

      我建议在 ajax 请求期间提供内容类型:

      contentType: 'application/json',
      

      如果不起作用,请尝试使用 JSON.Stringify 将数据设置为字符串,如下所示:

      data: JSON.stringify(postData)
      

      【讨论】:

        猜你喜欢
        • 2018-07-09
        • 1970-01-01
        • 1970-01-01
        • 2016-10-07
        • 2011-04-29
        • 1970-01-01
        • 2019-06-27
        • 2019-05-31
        • 1970-01-01
        相关资源
        最近更新 更多