发送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的,我得到:

注意:未定义指数:数据

为什么没有数据变量有任何价值,当我尝试打印或使用它呢?

+0

我不知道,但尝试使用$ _POST->数据。也许这是对象,因为你把它发送到你的脚本像对象,没有数组 – kalit

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); 
}} 
?> 
+1

谢谢,在控制台中的响应正在工作,但我怎么看它是否打印到test.php没有页面重定向到它? –

+1

不客气。如果你想将值打印到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); 
 
?>

+0

这个解决方案是我认为没有必要将数组转换为字符串 –

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(); 
+0

请提供解释如何这个片段回答这个问题。 –

+0

请编辑您的答案以包含一些解释。仅有代码的答案对未来SO读者的教育很少。您的回答是在低质量的审核队列中。 – mickmackusa

+0

只需要解释就不需要解释。 – Osama