2017-04-23 132 views
3

我試圖通過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

回答

3

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()函數從字符串中取回數組。 –

4

這是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

這個解決方案是我認爲沒有必要將數組轉換爲字符串 –

-2
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