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?