Salve,
ho uno script php che riceve due actions da una chiamata Asincrona, esegue delel operazioni sul db per recuperare l'id di una riga e lo stampa fuori (la parte in cui stampa è commentata)
Codice PHP:
<?php
require_once('config.inc.php');
require_once('./lib/functions.php');
require_once('./lib/classes.inc.php');
session_start();
//DB Connection Handler
if (isset($_SESSION['user'])) {
$conn = new mysqli($host,$user,$password,$dbname);
// verifica dell'avvenuta connessione
if (mysqli_connect_errno()) {
// notifica in caso di errore
echo "Errore in connessione al DBMS: ".mysqli_connect_error();
// interruzione delle esecuzioni i caso di errore
exit();
}
else {
// notifica in caso di connessione attiva
if (isset($_REQUEST['action'])) {
$action = $_REQUEST['action'];
switch ($action) {
case "first":
$id = first_db_id($conn);
break;
case "next":
if(isset($_REQUEST['vid'])) {
$vid = $_REQUEST['vid'];
if(next_db_id($conn,$vid)) {
$id = next_db_id($conn,$vid);
}
else {
$id = first_db_id($conn);
}
}
else {
header('HTTP/1.1 400 Bad Request');
die('Nessun ID ricevuto');
}
break;
case "prev":
if(isset($_REQUEST['vid'])) {
$vid = $_REQUEST['vid'];
if(prev_db_id($conn,$vid)) {
$id = prev_db_id($conn,$vid);
}
else {
$id = first_db_id($conn);
}
}
else {
header('HTTP/1.1 400 Bad Request');
die('Nessun ID ricevuto');
}
break;
default:
header('HTTP/1.1 400 Bad Request');
die('Azione inattesa');
break;
}// end switch
/*Qui stampa l'id richiesto*/
echo $id;
}
}
$conn->close();
}// first IF
else {
die('Nessuna sessione avviata');
}
?>
Ora ho la chiamata ajax che quando l'operazione ha successo dovrebbe ritornarmi in una variabile l'id stampato dal php:
codice:
function getSongId(action,songID){
var data = "action="+action+"&vid="+songID;
$.ajax({
url:"idsong.php",
data:data,
error: function (richiesta,stato,errori){
alert('Impossibile caricare il prossimo video');
},
success:function (php) {
return php;
}
});
}
Ora se in una pagina provo a fare questo:
codice:
var sID = getSongId('first',null);
alert(sID);
Mi risulta che la variabile è undefined.
Mentre se modifico così la chiamata ajax
codice:
function getSongId(action,songID){
var data = "action="+action+"&vid="+songID;
$.ajax({
url:"idsong.php",
data:data,
error: function (richiesta,stato,errori){
alert('Impossibile caricare il prossimo video');
},
success:function (php) {
alert(php);
}
});
}
E nella pagina di test scrivendo:
codice:
getSongId('first',null);
mi stampa correttamente l'alert con all'interno l'id giusto.
Io però avrei bisogno di passarmi quell'id in una variabile da usare in altre chiamate ajax. Cosa sbaglio?