【问题标题】:Get a json array with ajax用ajax获取一个json数组
【发布时间】:2015-12-16 06:36:39
【问题描述】:

我想获得一个用于 Ajax 的数组。我已经在另一个页面上使用了这个方法,这次它不起作用,所以我看不出问题出在哪里。

我有一个数组:

var array_downloads = <?php echo json_encode($array_downloads);?>;

这个数组不为空,当我执行console.log 时,我得到了内容,即元素列表。

之后,我就这样提出了我的 Ajax 请求:

$.post("pack.php", {arr:array_downloads}, function(data) { 
...
},'json');

所以我将我的数组发送到文件.php

最后我想得到这个数组:

$array_downloads = $_POST["arr"];

当我尝试回应它时(我不会忘记json_encode()),我得到null。 我不明白为什么。 请帮忙!

【问题讨论】:

  • 回显此file_get_contents("php://input") 并分享结果。这是发送到 PHP 的 $_POST 的原始数据
  • @StephenBugsKamenar 它什么也不显示:/
  • 这可能不是错误的原因,但我很确定您调用 $.post 的方式会自动将对象转换为查询字符串,而不是 JSON 字符串。您需要对对象进行字符串化,或者告诉 JQuery 不要转换它。请参阅api.jquery.com/jQuery.ajax 上的“processData”。
  • 出于调试目的尝试:var_dump ($_REQUEST);

标签: javascript php jquery arrays ajax


【解决方案1】:

我尝试使用相同的代码,它可以正常工作:

我更改的唯一代码是将json_encode 输出用引号括起来,以便javascript 将其视为字符串。

ma​​in.php

<?php $array_downloads = [1, 2, 3, 4, 5]; ?>
<script>
    var array_downloads = '<?php echo json_encode($array_downloads);?>';
    $.post("pack.php", {arr: array_downloads}, function (data) {
        console.log(data);
    }, 'json');
</script>

pack.php

<?php
var_dump(json_decode($_REQUEST['arr'],true));
?>

pack.php 中的输出

array (size=5)
  0 => int 1
  1 => int 2
  2 => int 3
  3 => int 4
  4 => int 5

【讨论】:

  • 但是 var_dump 为我显示了一个空数组
  • 所以你可以得到数组但我没有,我在pack.php中得到一个空数组。我不知道为什么:/
  • 只需在network tab-developer tools中查看通过服务器传输的数据
  • 我刚试过你的代码,但没有引号,我在$_POST["arr"]得到了一个数组
  • @gre_gor,在没有quotes的情况下,传输的数据是object,而不是string。就像:arr[]:1 arr[]:2 arr[]:3 arr[]:4 arr[]:5 通过服务器发送字符串似乎更合适..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-18
  • 1970-01-01
  • 2013-09-13
  • 2017-07-02
  • 1970-01-01
  • 2013-03-18
  • 2015-11-10
相关资源
最近更新 更多