在WordPress中,json_decode对POST数据返回"NULL"。

10 浏览
0 Comments

在WordPress中,json_decode对POST数据返回"NULL"。

我尝试将一个数组使用JSON.stringify发送给服务器,代码如下:

JavaScript:

jQuery.ajax({
    type: 'post',
    url: ajax_url, 
    data: {
       'settings' : JSON.stringify([...]),
       'action'   : [...]
       },
    traditional: true,
    success:function(data) {
        alert("SUCCESS");
    }, 
    error: function(errorThrown){
       console.log(errorThrown); 
   } 
});

但是当我尝试在PHP中使用json_encode解析它时,返回了NULL

PHP

$param = json_decode($test, true);
var_dump($param); //返回NULL

并且JSON.stringify的数组显示如下:

{\"uid\":{\"@cdata\":\"6\"},\"board_name\":{\"@cdata\":\"test\"},\"skin\":{\"@cdata\":\"default\"},\"use_comment\":{\"@cdata\":\"\"},\"use_editor\":{\"@cdata\":\"\"},\"created\":{\"@cdata\":\"20160307182421\"}}

我做错了什么?

0
0 Comments

在WordPress中,当使用json_decode解析POST数据时,可能会返回NULL。这个问题的原因是由于WordPress早期版本中引入了Magic Quotes的功能,这导致了POST数据中的引号被自动转义,而json_decode无法正确解析带有转义引号的数据。

解决这个问题的方法是使用stripslashes函数,它可以移除POST数据中的转义引号。以下是在WordPress中解决json_decode返回NULL的示例代码:

$test = stripslashes($_POST['settings']);
json_decode($test, true);

使用stripslashes函数可以确保POST数据中的引号被正确解析,从而避免返回NULL的情况。这个方法已经经过验证可以解决问题,并得到了许多开发者的确认和感谢。

总结起来,当在WordPress中使用json_decode解析POST数据时返回NULL的问题是由于Magic Quotes功能导致的。通过使用stripslashes函数可以解决这个问题,确保POST数据中的引号被正确解析。希望本文对遇到类似问题的开发者有所帮助。

0