Estoy tratando de enviar una matriz de JavaScript a un archivo PHP a través de 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();
prueba.php:
<?php $songData = $_POST['data']; $songData = explode(',', $songData); print_r(array_values($songData)); ?>
cuando enviarDatos(); me dirige a test.php obtengo:
Aviso: índice indefinido: datos
¿Por qué la variable de datos no tiene ningún valor cuando intento imprimirla o usarla?
Así no es como funciona la solicitud POST. Lea más sobre Ajax, pero por ahora, así es como debe hacerlo.
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); ?>
1) $.post('url') - La solicitud de Ajax se realiza mediante el método $.post()
y ha proporcionado "testing.php"
como URL que no es válida.
2) window.location = 'test.php' - Esto se usa para redirigir a una página específica y ha redirigido a 'test.php'
sin ningún parámetro/dato. Es por eso que muestra "Aviso: índice indefinido: datos"
3) Trate de entender cómo funciona ajax. Siguelo -
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); }} ?>