发送JavaScript数组到PHP通过POST
我试图通过POST JavaScript数组发送到PHP文件。发送JavaScript数组到PHP通过POST
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));
?>
时的SendData();会指示我test.php的,我得到:
注意:未定义指数:数据
为什么没有数据变量有任何价值,当我尝试打印或使用它呢?
1)$。员额( '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请求不是如何工作的。阅读关于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);
?>
这个解决方案是我认为没有必要将数组转换为字符串 –
var songlist = ['song1', 'song2', 'song3'];
var sendData = function(){
var data = songList.join(',')
$.post('testing.php', {data: data}).always(function() {
window.location = "test.php?data=$data";
});
}
sendData();
请提供解释如何这个片段回答这个问题。 –
请编辑您的答案以包含一些解释。仅有代码的答案对未来SO读者的教育很少。您的回答是在低质量的审核队列中。 – mickmackusa
只需要解释就不需要解释。 – Osama
我不知道,但尝试使用$ _POST->数据。也许这是对象,因为你把它发送到你的脚本像对象,没有数组 – kalit