通过 POST 将 JavaScript 数组发送到 PHP

Posted

技术标签:

【中文标题】通过 POST 将 JavaScript 数组发送到 PHP【英文标题】:Sending a JavaScript array to PHP via POST 【发布时间】:2017-09-20 01:45:33 【问题描述】:

我正在尝试 文件。

JS:

var songlist = ['song1', 'song2', 'song3'];

var sendData = function()
    var data = songList.join(',')
    $.post('test.php', data: data).always(function() 
        window.location = 'test.php';
    );

sendData();

test.php:

<?php
$songData = $_POST['data'];
$songData = explode(',', $songData); 
print_r(array_values($songData));
?>

当发送数据();指示我到 test.php 我得到:

注意:未定义的索引:数据

为什么我尝试打印或使用数据变量时没有任何值?

【问题讨论】:

我不确定,但请尝试使用 $_POST->data。也许这是对象,因为您将其发送到脚本之类的对象,没有数组 【参考方案1】:

这不是 POST 请求的工作方式。阅读有关 Ajax 的更多信息,但现在,您应该这样做。

var songlist = ['song1', 'song2', 'song3'];

var sendData = function() 
  $.post('test.php', 
    data: songlist
  , function(response) 
    console.log(response);
  );

sendData();
// test.php
<?php
$songData = $_POST['data'];
print_r($songData);
?>

【讨论】:

这个解决方案是我想的没有必要将数组转换为字符串【参考方案2】:

1) $.post('url') - Ajax 请求是通过 $.post() 方法完成的,并且您将 "testing.php" 作为无效的 url。

2) window.location = 'test.php' - 这用于重定向到特定页面,您已经重定向到'test.php',没有任何参数/数据。这就是为什么它显示“注意:未定义的索引:数据”

3) 尝试了解 ajax 的工作原理。跟着它-

var songlist = ['song1', 'song2', 'song3'];

var sendData = function() 
  $.post('test.php', 
    data: songlist
  , function(response) 
    console.log(response);
  );

sendData();
// test.php
<?php
if(isset($_POST))
    if(isset($_POST['data']))
    $songData = $_POST['data'];
    print_r($songData);

?>

【讨论】:

谢谢,控制台中的响应正在运行,但是我如何查看它是否打印到 test.php 而页面没有将我重定向到它? 不客气。如果要将值打印到 test.php ,则不需要使用 ajax。只需重定向 - var data = songList.join(','); window.location = "test.php?data="+data;并在您的 php 脚本上使用 explode() 函数从字符串中获取数组。

以上是关于通过 POST 将 JavaScript 数组发送到 PHP的主要内容,如果未能解决你的问题,请参考以下文章

如何通过ajax从表单发送POST数据数组?

Javascript POST 不起作用 - 将 Javascript 数组发送到 PHP

AJAX POST 发送的 Javascript 数组

通过 POST 将 JSON 编码的变量从 PHP 传递到 Javascript

如何通过 POST 方法将数组发送到服务器?

如何通过 Ionic 5 应用程序中的 http post 将数组传递给 Mailgun api?