$ .ajax将数组作为Json发布到PHP。 $ _POST =空

时间:2012-10-05 20:34:40

标签: php javascript jquery ajax json

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

似乎无法在PHP文件中获取数据

  1. 首先,我多次调用“复制”来填充“结果”数组。
  2. 然后,我调用$.ajax方法
  3. 在process.php $ _POST为空
  4. - >在PHP $x$y$time中或不为空但不为空。

      

    编辑2:

         

    好的 - 用json_last_error()我看到它是我的json   “语法错误:格式错误”。但我不知道如何编码它比我更好   这样做。

         

    所以我通过在$ _POST上添加stripslashes()作弊。

         

    [{\ “×\”:104,\ “Y \”:218,\ “时间戳\”:1349476537434},{\ “×\”:90,\ “Y \”:202,\“时间戳\ “:1349476537469},{\” ×\ “:82,\” Y \ “:192,\” 时间戳\ “:1349476537487},{\” ×\ “:71,\” Y \“:177,\ “时间戳\”:1349476537514},{\ “×\”:68,\ “Y \”:174,\ “时间戳\”:1349476537568},{\ “×\”:68,\ “Y \”:173 ,\ “时间戳\”:1349476537801},{\ “×\”:68,\ “Y \”:174,\ “时间戳\”:1349476538478},{\ “×\”:68,\ “Y \” :175,\ “时间戳\”:1349476538512},{\ “×\”:68,\ “Y \”:175,\ “时间戳\”:1349476538579},{\ “×\”:69,\“Y \ “:175,\” 时间戳\“:1349476538678}]

         

    修改1:

         

    发布的数据似乎很好(看下),我完成了   “成功功能”。

         

    [{ “×”:529, “Y”:97 “时间”:1349469608703},{ “×”:385, “Y”:331, “时间”:1349469608720},......]

    JS Side - 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 个答案:

答案 0 :(得分:1)

$JSONArray是关联数组的数组,因此要访问第一个元素f,请使用$JSONArray[0]['x]$JSONArray[0]['y']代替$JSONArray['x']

答案 1 :(得分:1)

在JavaScript端,您发布了一个对象数组 - 一个x / y /时间组合列表。然而,PHP方面忽略了列表和对象部分:

$x = $JSONArray["x"];

VS

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

所以整个循环可能是:

foreach($JSONArray as $triple)
{
    $x=$triple->x;
    $y=$triple->y;
    $time=$triple->time;
}

答案 2 :(得分:0)

还设置dataType:attribute

你的ajaxrequest

dataType : 'json'

答案 3 :(得分: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);

?>