通过 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的主要内容,如果未能解决你的问题,请参考以下文章
Javascript POST 不起作用 - 将 Javascript 数组发送到 PHP