0

我正在尝试将 json 发布到 txt 文件,但我的数据存在一些问题。每当我检查要在 jQuery 中发送的数据时,它看起来都很好,但是如果我在 php 中将其打印出来,我会看到转义斜杠并且 json_decode 将该数据返回为空。这是代码片段:

jQuery

$.ajax({
    type : 'POST',
    url : 'update-json.php',
    dataType : 'json',
    data : {json : JSON.stringify([{'name':'Bob'},{'name':'Tom'}])},
    success : function(){
        console.log('success');
    },
    error : function(){
        console.log('error');
    }
});

PHP

<?php
    $json = $_POST['json'];
    $entries = json_decode($json);

    $file = fopen('data-out.txt','w');
    fwrite($file, $entries);
    fclose($file);
?>

PHP ECHO $json

[{\"name\":\"Bob\"},{\"name\":\"Tom\"}]

PHP ECHO $条目

//EMPTY
4

1 回答 1

2

看起来你在 PHP 中打开了 magic_quotes。通常你应该关闭它以避免这样的问题。如果你不能这样做,你需要调用stripslashes()你的传入字符串。

您还可以检查json_last_error()以找出无法解码的原因。

编辑:这是你输入的方式stripslashes

$json = stripslashes($_POST['json']);
$entries = json_decode($json);

if( !$entries ) {
     $error = json_last_error();
     // check the manual to match up the error to one of the constants
}
else {

    $file = fopen('data-out.txt','w');
    fwrite($file, $json);
    fclose($file);
}
于 2013-01-16T18:15:20.507 回答