为什么这个javascript数组不传递给php?
我知道以前有人问过这个问题,但我找不到任何解决办法。我有一个js数组,在控制台中看起来像这样:-为什么这个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
[]
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)},然后尝试并记录这个,我什么都没有得到。请解释为什么我的问题被否决了?