Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php的javascript数组_Php_Javascript_Jquery_Ajax_Arrays - Fatal编程技术网

php的javascript数组

php的javascript数组,php,javascript,jquery,ajax,arrays,Php,Javascript,Jquery,Ajax,Arrays,我想使用jqueryajax向php发送一个javascript数组 $.post("controllers/ajaxcalls/users.php", { links: links }); 其中第二个“链接”是一个javascript数组 当我得到这个数组时: '1' ... '1' => "comment1" '2' => "link1" '3' => "link2" '4' => "link3" '2' ... '1

我想使用jqueryajax向php发送一个javascript数组

$.post("controllers/ajaxcalls/users.php",
{
    links: links
});
其中第二个“链接”是一个javascript数组

当我得到这个数组时:

'1' ...
    '1' => "comment1"
    '2' => "link1"
    '3' => "link2"
    '4' => "link3"
'2' ...
    '1' => "comment2"
    '2' => "link4"
然后使用:

var jsonLinks = JSON.stringify(links);
alert(jsonLinks);
将给我:

[null,[null,"comment1","link1","link2","link3"],[null,"comment2","link4"]]
在我看来好像有什么不对劲。空值是什么?我不能在php端使用json_解码来获取元素

我应该使用什么函数将其转换为json,以及如何在php端访问它

尝试了这一点,但它将提供与JSON.stringify()完全相同的输出(文档中也有这样的说法)

在几个小时内,我一直在努力解决这个问题……如果能得到一些具体的帮助,我将不胜感激


我只想将一个数组从javascript发送到php…为什么这么难://

有一些jQuery插件可以编码为JSON(并从JSON解码)


例如,您可以查看(引用):

这个插件公开了四个新功能 在$或jQuery对象上:

  • toJSON
    :将javascript对象、数字、字符串或数组序列化为 JSON
  • evalJSON
    :快速地将JSON转换为Javascript,而且非常简单
  • SecureValJSON
    :从JSON转换为Javascript,但在 正在检查源是否正确 实际上是JSON,而不是其他的 抛出Javascript语句
  • quoteString
    :在字符串周围加引号,并智能地转义任何字符串 引号、反斜杠或控件 人物

我不确定您是如何在PHP脚本中阅读此内容的,但如果它与您使用基于1的数组而不是基于0的数组有关,那么在javascript中,您可以使用以下方法删除null(第0个元素):


回答null部分时,JavaScript数组是数字的,并且基于零:

>>> var foo = [];
>>> foo[5] = 'Five';
"Five"
>>> foo
[undefined, undefined, undefined, undefined, undefined, "Five"]
相反,PHP允许缺少(和混合)键:


大堆
(
[5] =>五个
)

如果您想使用数组,我建议您将它们设置为零,并防止丢失值。否则,您可能会改用对象。

这些对象提供与使用JSON.stringify()相同的输出。如果输出没有问题,如何访问元素?我尝试使用alert(jsonLinks[1][1]),但它给出了一个未定义的值。我没有得到空值:s…这些是什么?我从未访问过通过javascript发送的数组,但我猜它的$links=json_decode($\u POST['links']),然后只使用$links[1][1]等,但它不起作用。所以我想有些事情是错误的,为什么我会得到所有的空值?你得到空值是因为你从索引“1”开始你的数组。Javascript数组是基于零的,所以索引0(links[0]、links[1][0]和links[2][0])将为“null”(未设置)。您为什么再次问这个问题?你已经问过了
>>> var foo = [];
>>> foo[5] = 'Five';
"Five"
>>> foo
[undefined, undefined, undefined, undefined, undefined, "Five"]
<?php

$foo = array();
$foo[5] = 'Five';
print_r($foo);

?>

Array
(
    [5] => Five
)