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

为什么这个javascript数组不传递给php?,javascript,php,arrays,json,ajax,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:"34188494344498

我知道以前有人问过这个问题,但我找不到任何解决办法。我有一个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
          });
                //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);

                }
            });
然后我通过ajax将其发送到php,如下所示:-

  var allstock = {
      pdata: []
  };

        allstock.pdata.push({
            "stock" : response.stock,
            "createdtime" : response.createdtime,
            "id" : response.id,
            "units" : response.units
          });
                //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>";

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

我不知所措,尝试过许多不同的事情,但没有乐趣。希望有人能帮忙

谢谢


Jonathan尝试更改ajax代码,如下所示



不知道为什么这个问题被否决了:-(无论如何,谢谢你的回答,但它仍然不起作用。当我登录JSON.stringify(allstock.pdata)时它是空的,当我console.log allstock.pdata时,我得到了完整的数组。我想这可能是因为数组应该是一个对象,但不能是suer,并且不知道如何更改它?@JonathanLyon不确定。你能在没有JSON的情况下尝试一下吗。stringify?很奇怪,当我使用strinify或不使用strinify时,它仍然显示空数组-“stockarray=”。我认为这与数组本身有关。它将在控制台中显示数据,但第一个元素是[],然后是0:Object、1:Object、2:Object等。因此,我认为这与初始的。打开[]有关这表明它是一个空数组,而不是可能的?@JonathanLyon您的代码对我有用。我刚刚创建了一个提琴示例供您参考-请检查您的浏览器控制台。在我的控制台中,我可以看到ElementsHanks,数组不是问题所在,我也可以看到元素。但是,当我尝试通过ajax发送数组时,它确实可以什么都不通过。如果我添加数据:{stockarray:JSON.stringify(allstock)},然后尝试并记录这个,我什么都没有得到。请解释为什么我的问题被否决了?