2017-01-15 17 views
-1

私は単純なJSスクリプトを書いています。これはマウスの位置を配列に保存してから、AJAX経由でphp関数に送ります。それは動作し、受信したデータを保存しますが、問題はそれがどのように保存されているかです。つまり、xとyの位置が正常に出力されることを期待します。[x1、y1]、[x2、y2]、[x3 、y3]、...JavaScript配列をAJAX経由で

しかし、私はこのようなものです: a:63:{i:0; a:2:{i:0; i:527; i:1; i:1010 ; i:1; a:2:{i:0; i:490; i:1; i:1205;} i:2; a:2:{i:0; i:588; i:1; i :1311;} i:3; a:2:{i:0; i:615; i:1; i:1368;} i:4; a:2:{i:0; i:553; i:1 ; i:1474;} i:5; ...

JSON形式でエンコードすると、思ったとおりに保存されると思いますが、出力がそのままの理由はわかりません。何か案は?

window.onbeforeunload = function() { 
    var jsonString = JSON.stringify(tabela); 
    $.ajax({ 
     type: 'POST', 
     url: 'process.php', 
     data: { 
      text1: jsonString 
     } 
    }); 
} 

そして、PHP側はこれです::次のように

JSコードがあるあなたがserialize機能によって配列が渡さので内容は、ファイルに次のようになります

 
    $text1 = json_decode(stripslashes($_POST['text1'])); 
    $string_data = serialize($text1); 
    file_put_contents("your-file.txt", $string_data); 

+0

'JSON_UNESCAPED_SLASHES'でエンコードされ、セキュリティリスクとしてユーザー入力を**決して**シリアル化しない限り、' stripslashes() 'はjson形式ではありません。 – Xorifelse

+0

本当に申し訳ありませんが、それを削除してもまだ期待通りに動作しません... –

+0

@Rafaelは言うように、ファイルに直接ファイルを保存してください: 'file_put_contents(" your-file.txt "、$ _POST [ 'text1']。PHP_EOL); ' – Xorifelse

答えて

0

。ファイルコンテンツを「デコード」するには、unserializeを使用します。 人間が読めるファイルのコンテンツをもっと見たい場合は、serializeの代わりにファイル$_POST['text1']にJSON文字列を保存してをもう一度使用してからfile_put_contentsを呼び出してください。

+0

ありがとう、あなたのアンサーが私を助けました。 –

+0

@TadejBogatajようこそ。お役に立てて嬉しいです。 – Rafael

+0

@TadejBogatajもしそれが助けられたなら、upvoteへの礼儀を持ってください。あなたはあなたの質問をしてから15分後にそれを答えとしてマークすることができます。 – Xorifelse

関連する問題