0

わかりました、私はこれに多くの時間を費やしていますが、何が間違っているのかわかりません。

PHP ファイル内のデータを取得できないようです

  1. 最初に、「コピー」を何度も呼び出して「結果」配列を埋めます。
  2. 次に、$.ajaxメソッドを呼び出します
  3. process.php で $_POST が空です

--> PHP$xで、$yまたは$timenull ではなく空ではありません。

編集2:

わかりました-json_last_error()を使用すると、「構文エラー:不正な形式」のjsonであることがわかりました。しかし、私がやっていることよりもうまくエンコードする方法がわかりません。

だから私は $_POST に stripslashes() を追加してカンニングします。

[{\"x\":104,\"y\":218,\"タイムスタンプ\":1349476537434},{\"x\":90,\"y\":202,\"タイムスタンプ\": 1349476537469},{\"x\":82,\"y\":192,\"タイムスタンプ\":1349476537487},{\"x\":71,\"y\":177,\"タイムスタンプ\ ":1349476537514},{\"x\":68,\"y\":174,\"タイムスタンプ\":1349476537568},{\"x\":68,\"y\":173,\"タイムスタンプ\":1349476537801},{\"x\":68,\"y\":174,\"タイムスタンプ\":1349476538478},{\"x\":68,\"y\":175, \"タイムスタンプ\":1349476538512},{\"x\":68,\"y\":175,\"タイムスタンプ\":1349476538579},{\"x\":69,\"y\": 175,\"タイムスタンプ\":1349476538678}]

編集1:

投稿されたデータは良いようで(下を見てください)、「成功関数」で終了します。

[{"x":529,"y":97,"時間":1349469608703},{"x":385,"y":331,"時間":1349469608720},.....]

JS 側 - index.php :

<script src="jquery.js"></script>    

results = new Array();

function copy(x, y, time) {
   var o = { 'x': x, 'y': y, 'time': time };
   results.push(o);
}

function save() {
    var encoded_results = JSON.stringify(results);

    $.ajax({
        url: "process.php",
        type: 'POST',
        data: {
            "results" : encoded_results 
        },

        success: function(data, status, xhr) {
           alert(data);
           console.log(data);
           console.log(xhr);
        },      
        error: function (xhr, ajaxOptions, thrownError) {
            alert(xhr.status);
            alert(thrownError);
        }
    });
}

PHP 側 - process.php :

if(isset($_POST["results"]))
{
    $result_json = $_POST["results"];
    $JSONArray  = json_decode($result_json, true);

    if($JSONArray !== null)
    { 
        $x = $JSONArray["x"];
        $y = $JSONArray["y"];
        $time = $JSONArray["time"]
    }
}
4

4 に答える 4

1

$JSONArrayは連想配列の配列であるため、最初の要素 f にアクセスするには$JSONArray[0]['x]$JSONArray[0]['y']代わりに を使用します$JSONArray['x']

于 2012-10-05T20:45:25.250 に答える
1

JavaScript 側では、オブジェクトの配列 (x / y / 時間の組み合わせのリスト) を投稿しています。ただし、PHP 側はリストとオブジェクトの部分を無視します。

$x = $JSONArray["x"];

対。

$x = $JSONArray[0]->x;

したがって、ループ全体では次のようになります。

foreach($JSONArray as $triple)
{
    $x=$triple->x;
    $y=$triple->y;
    $time=$triple->time;
}
于 2012-10-05T21:27:31.657 に答える
0

また、dataType: 属性を設定します

dataType : 'json' あなたのajaxrequestで

于 2012-10-05T20:40:55.213 に答える
0

私はちょうどこれをやった、これはAJAXのための私の構文です:

$.ajax({
  type: "GET",
  url: "test2.php",
  data: { anarray : array1 },
  dataType: "json",
  success:function(result){  
  array1 = result;
  $.each(array1, function(x, valu){
    $('#arraycontent').hide().append(x + " " + valu + "<br>").fadeIn();
  })
    }            
    });

PHP ファイルは、デモンストレーションのために 2 つの要素を簡単にプッシュしました。

<?php 
$testArray = $_REQUEST['anarray'];

array_push($testArray, 'test', 'stuff');

echo json_encode($testArray);

?>
于 2012-10-05T20:43:55.843 に答える