【问题标题】:Getting an array back from php after Ajax POST [duplicate]在 Ajax POST 之后从 php 中获取一个数组 [重复]
【发布时间】:2017-01-22 15:33:35
【问题描述】:

我正在将我在 javascript 中的数组发送到 php,使用:

usernames = ['username1','username2']


$.ajax({
            url: "my_Url",
            type: "post",
            data: {username:usernames} ,
            success: function (response) {
               // you will get response from your php page (what you echo or print)     
               alert(response);
            }
        });

数据将被发送到包含以下内容的 php 脚本:

<?php
header('Access-Control-Allow-Origin: *');
$usernames = $_POST['username'];
echo $usernames;
?>

问题是我收到警告说 Array 但不是实际数组本身中的内容。如何获取数组中的内容并再次将其放入变量中。

【问题讨论】:

  • 你想用那个数组做什么?

标签: javascript php ajax post


【解决方案1】:

因为数据类型是数组,所以 javascript 会从回显的 PHP 中发出警报。通常,您可以将数组转换为字符串,可以在 ajax 响应中可视化,使用 json_encode()

echo json_encode($usernames);

然后要在前端处理 JSON,请使用 JSON.parse()。正如一位用户所指出的,在回显 json 之前在后端脚本中设置内容标头很有用:

header('Content-Type: application/json');

更详细地讨论了这种方法here

另一种对数值数组有用的可能性(例如在您的代码中)是简单地回显内爆数组,这会将其转换为字符串:

echo implode(",", $usernames); // the ajax response will be username1,username2 here

【讨论】:

  • 您可能需要添加设置header('Content-type: application/json'); 将帮助jquery 自动将返回的数据处理成javascript 可以直接使用的东西。
  • @SuperJer 如果您在 AJAX 调用中添加 dataType: 'json' 是否需要?
  • @SuperJer,这不是必需的,但会根据另一篇帖子编辑答案以包含您的建议
猜你喜欢
  • 1970-01-01
  • 2011-05-22
  • 1970-01-01
  • 2018-05-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多