使用 $.ajax 时在 PHP 中获取空数组 [重复]

Posted

技术标签:

【中文标题】使用 $.ajax 时在 PHP 中获取空数组 [重复]【英文标题】:Getting empty array in PHP while using $.ajax [duplicate] 【发布时间】:2018-05-01 03:50:59 【问题描述】:

我有这个 jQuery $.ajax 脚本:

var data = JSON.stringify( selected_products );

$.ajax( type: "POST", 
    url: "addtocart.php", 
    data: data, 
    dataType: 'application/json'
); 

我将其发布到一个非常简单的 PHP 脚本中:

$selected_products = json_decode($_POST['data'], true);
print_r($selected_products);

这是我发送的示例;这是 Chrome DevTools 中的传出数据:

data:["id":"RECOLOURBALM","option":"Black","quantity":1,"id":"TOWELS","quantity":1]

但是,这是响应的控制台读数:

Array
(
)

我认为请求成功并且正在传递数据,但是响应都是空的。

我做错了什么?

【问题讨论】:

这可能对***.com/questions/22851766/…有帮助 ***.com/questions/18866571/receive-json-post-with-php 这个问题出现了很多,之前已经回答过很多次了。检查上面的链接之一 @darragh enright 问题出在 stringify.. 【参考方案1】:
$selected_products = json_decode($_POST['data'], true);
echo $selected_products[0]['id'];
echo '<br>';
echo $_POST;
echo '<br>';
var_dump($_POST);

在您的帖子中添加数据

您现在得到 null 这是因为那里给出了 stringify。请像这样更改代码。它肯定会工作。

var data=["id":"RECOLOURBALM","option":"Bordeaux","quantity":1,"id":"TOWELS","quantity‌​":1];
//data = JSON.stringify(data);
$.ajax( 
    type: "POST", 
    url: "addtocart.php", 
    data: 'data':data, 
    success:function(returndata)
        console.log(returndata);
    
);

删除字符串化。

【讨论】:

感谢您的回复!我现在的反应是:NULL print $selected_products 删除所有其他行..输出是什么 还在ajax中添加一个数据类型为json 用于打印($selected_products);我没有得到回应? 将 contentType: 'application/json' 添加到 ajax.. 打印 $_post 变量时你得到了什么【参考方案2】:

如果Content-Type设置为application/json,则必须按如下方式接收数据。

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

$_POST会收到request的数据,有Content-Type:x-www-form-urlencoded(Form Data)

【讨论】:

以上是关于使用 $.ajax 时在 PHP 中获取空数组 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在使用codeigniter并从curl获取数据时在ajax中添加href

从PHP登录请求获取空的AJAX响应

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

提交表单时在控制器中获取空值

使用 Ajax 发布数组但 PHP 获取字符串

PHP 从 Ajax 调用接收空的 $_POST 变量