0

Angular($http.post) と PHP を使用して、json ファイルをサーバーに保存しています。保存されたjsonファイルには、数値やブール値を含む文字列に変換/保存されたすべての値があります。これは明らかに、json ファイルが後で読み込まれるときに問題を引き起こしています。

PHP コード:

header('Content-Type: application/json;charset=utf-8');

$fh = fopen('savedfiles/'.$_POST['fileName'], 'w') or die("can't open file");

if(fwrite($fh, json_encode($_POST['fileData']))===FALSE){
    echo "FAILED";
}
else {

    echo "SUCCESS";
}

fclose($fh);

Angular/$http コード:

var deferred = $q.defer();
var savePromise = $http.post('save.php',{fileName:file_name,fileData:data}).
then(function(response){
  deferred.resolve(response.data);
},function(response){ 
  deferred.resolve("FAILED");
});
return deferred.promise;

あらゆる提案をありがとう!

更新:保存された JSON ファイルの出力は次のとおりです。

更新: PHP ファイルに送信される前のデータは次のとおりです。

4

3 に答える 3

2

から直接 JSON オブジェクトを取得できないことに注意してくださいPOST。これは単なる文字列なので、実際には意味がありませんjson_encode。既にエンコードされているため、エンコーダーを介さずに直接ファイルに保存するだけです。

于 2013-04-26T19:59:06.103 に答える
1

既に POST されたデータに対して json_encode を実行しています。この場合、一連のキーと値のペアがあり、すべての値が文字列形式になっています。

それらをクライアント側でエンコードしてから、JSON 文字列を POST できる単一のフィールドに入れる必要があります。次に、その JSON 文字列にはすべてのデータ型が保持されます。

var json_str = JSON.stringify(myobject); 

ここで、json_str を HTML フォーム フィールドであるかのように POST します。

于 2013-04-26T21:15:24.840 に答える
1

を使用JSON.stringify()して、データを文字列に格納するのに適した形式に変換してから、もう一度解析して戻すことができますJSON.parse()

var savePromise = $http.post('save.php',{fileName:file_name, fileData: JSON.stringify(data)}).
于 2013-04-26T20:43:25.223 に答える