0

好的,我花了很多时间在这上面,我不明白我做错了什么。

在 PHP 文件中获取数据似乎是不可能的

  1. 首先,我多次调用“复制”来填充“结果”数组。
  2. 然后,我调用该$.ajax方法
  3. 在 process.php $_POST 是空的

--> 在 PHP$x中,$y或者$time不为空但不为空。

编辑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,"time":1349469608703},{"x":385,"y":331,"time":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' 在你的 ajax 请求中

于 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 回答