为什么这个javascript数组没有传递给php?

时间:2016-10-12 18:07:34

标签: javascript php arrays json ajax

我知道之前已经问过这个问题,但我无法找到解决方案。我在控制台中有一个js数组: -

[]
  0:Object
    stock:27
    createdtime:"2016-04-08T04:00:00+0000"
    id:"693852404037393999"
    units:438
  1:Object
    stock:17
    createdtime:"2016-04-04T07:00:00+0000"
    id:"341884943444989396"
    units:267

创建此数组的代码如下所示: -

  var allstock = {
      pdata: []
  };

        allstock.pdata.push({
            "stock" : response.stock,
            "createdtime" : response.createdtime,
            "id" : response.id,
            "units" : response.units
          });

然后我通过ajax将它发送到php: -

                //ADD STOCK DETAIL TO DB
    var mydata = 'stockarray='+ JSON.stringify(allstock.pdata);
            $.ajax({
            type: "POST",
            url: 'stocktodb.php',
            data: mydata,
            success: function(data) {
                $('#showarraydata').html(data);

                }
            });

在我的stocktodb.php文件中,我有这个:

<?php

$myarray = $_POST['stockarray'];
$mydata = json_decode($myarray,true);

echo "<pre>";
print_r($mydata);
echo "</pre>";

?>

但是当它返回/回显时,我只能在屏幕上显示: -

Array
(
)

我认为数组甚至没有进入POST或者数组有问题(尽管它使用json lint验证)。也许与stringify有关,而且我的数组只在控制台中显示[],然后在下面的对象中显示?

我不知所措,尝试了许多不同的事情但却没有快乐。希望有人可以提供帮助。

由于

乔纳森

1 个答案:

答案 0 :(得分:2)

尝试更改下面的ajax代码。

//ADD STOCK DETAIL TO DB 
$.ajax({ 
  type: "POST", 
  url: 'stocktodb.php', 
  data: {stockarray : JSON.stringify(allstock.pdata)}, 
  success: function(data) { 
    $('#showarraydata').html(data); 
  } 
});