0

入力したフォームに基づいてjsonファイルを書き込もうとしています

そこで、フォームを正当な JSON に変換する jquery 用の外部ライブラリを使用しました。その出力を console.log すると、有効な json データが返されます。

したがって、$.ajax を使用してデータを php に渡し、内容をファイルに書き込むたびに、PHP はファイルを保存しますが、内部には「NULL」とだけ表示されます。

ここに私のAJAXがあります:

$(document).ready(function() {
    var json = $("#user-form").serializeJSON();
    $.ajax({
        url: "writejson.php",
        type: "POST",
        data: json,
        processData: false,
        contentType: 'application/json'
    });
})

そして、ここに私のPHPがあります:

<?php
    $myFile = "kiosk.json";
    $fh = fopen($myFile, 'w') or die("can't open file");
    fwrite($fh,var_export($_POST['data'], true));
    fclose($fh);
?>

出力されたファイルの内容は次のとおりです。

NULL

最初にここで調べてみて、さまざまなオプションを試しましたが、どれも正しいデータを保存していないようです。本当に奇妙です。

前もって感謝します!

4

2 に答える 2

1

これからjson文字列をいつでも変更できます

 var json = $("#user-form").serializeJSON();

これに

 var json = {data: $("#user-form").serializeJSON()};

そうすれば、$_POST['data'] を取得しようとすると、定義したために実際に設定されます。

JSON.stringify編集: Shuyinsama による重要なポイント - PHP に投稿する前に、JSON オブジェクトでメソッドを使用する必要があることを指摘しました:

私の場合、これは私がしたことです:

var jsontext = JSON.stringify($("#user-form").serializeJSON());

var json = {data: jsontext};

次に、最初の PHP ファイルを使用して有効な JSON ファイルに書き込みます。

json_decode();また、JSON データに対して何らかの処理を行う必要がある場合は、PHP 内で および をそれぞれ使用できることを常に覚えておいてくださいjson_encode();

于 2013-07-11T15:58:10.693 に答える
0

「data」というポスト変数がない限り、これは null を返します。あなたは試してみたいかもしれませんhttp_get_request_body()

于 2013-07-11T15:37:57.070 に答える