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 エコー $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 に答える