2012-11-13 30 views
6

Sono nuovo di AJAX e sono un po 'confuso da ciò che PHP restituisce al jQuery. Così si dispone di una funzione AJAX come questa:AJAX jQuery PHP Valore restituito

$.ajax({ url: '/my/site', 
    data: {action: 'test'}, 
    type: 'post', 
    success: function(output) { 
        alert(output); 
       } 
}); 

(Ho preso questa da Ajax un'altra pagina StackOverflow.)

Ma su varie altre risorse avranno la sezione successo simile a questa:

success: function(data) {functionfoocommandshere} 

Sono solo confuso su ciò che detta la denominazione di questa variabile? Se il PHP in ultima analisi, fa eco un array:

echo $myVar; 

Come posso ottenere questo dal AJAX?

+1

La data' variabile del metodo 'Success' terrà tutto quello che' 'echo' in PHP. Non è possibile passare direttamente una matrice; devi prima convertirlo in JSON. – woz

+0

Quale variabile sei confuso riguardo alla denominazione di? – Alfo

+0

Vedere questo http://www.php4every1.com/tutorials/jquery-ajax-tutorial/ – GBD

risposta

13

Un Ajax-Requests recupera un intero sito. Quindi non otterrai alcun dato nelle variabili, ma l'intero sito nel parametro dei dati. Tutti gli echi che hai fatto insieme saranno in questo parametro. Se vuoi recuperare un array, dovresti prima trasformarlo in json.

echo json_encode($myArray); 

Poi si può riceverlo tramite Ajax in questo modo

$.ajax({ url: '/my/site', 
data: {action: 'test'}, 
dataType: 'json', 
type: 'post', 
success: function(output) { 
       alert(output); 
      } 
}); 
+0

Hai davvero bisogno di "echo" il valore? che dire se non vuoi mostrare l'output? @Gnietschow –

+0

'echo' non mostra nulla all'utente scrive solo dati nella risposta del server, quindi viene inviato al client. Dopo che la chiamata ajax ha ricevuto l'output, è a te decidere se mostrare questa risposta all'utente o meno. – Gnietschow

-1

I dati restituiti dalla funzione PHP AJAX, possono essere recuperati dal blocco success. Ecco il manual

$.ajax({ url: '/my/site', 
data: {action: 'test'}, 
type: 'post', 
dataType: 'json', 
success: function(output) { 
    //output is the data returned from PHP AJAX function in JSON format 
    alert(output); 
    } 
}); 
+0

Quindi non importa? il comando .ajax saprà che qualsiasi cosa all'interno degli argomenti function() sta restituendo informazioni php? – eatonphil

+1

Sì, è corretto. –

+0

Fantastico, questo chiarisce le cose! – eatonphil

6

In te file PHP, utilizzare json_encode per trasformare l'array in un più comodo formato per l'uso in Javascript. Così si avrebbe qualcosa come:

echo json_encode($myArray); 

Poi, nel vostro JavaScript, la variabile data del metodo success terrà la JSON. Utilizza jQuery's parseJSON per convertirlo in un oggetto JavaScript, che sarà quindi molto facile da manipolare. Non so quello che contiene serie, ma si potrebbe fare qualcosa di simile:

$.ajax({ url: '/my/site', 
    data: {action: 'test'}, 
    type: 'post', 
    success: function(data) { 
     var obj = jQuery.parseJSON(data); 
     alert(obj.name[0] === "John"); 
     } 
}); 

Anche in questo caso, la variabile data qui conterrà nulla tue uscite PHP, ma JSON è un modo comune e conveniente per trasferire dati indietro al tuo JavaScript

3
<script type="text/javascript"> 
$.ajax({ 
    url: '/my/site', 
    data: {action: 'test'}, 
    type: 'post', 
    success: function(output) { 
     alert(output); 
    } 
}); 
</script> 

<?php 
$action = $_POST['action']; 
echo $action;?> 

Qualsiasi uscita stampata/echo verrà restituita alla funzione riuscita. Questo è utile quando vuoi riempire un contenitore html con qualcosa che devi eseguire in tempo reale.

Una volta risolto questo problema, un'altra opzione è utilizzare JSON per restituire variabili con valori.

+0

recuperando il formato completo html, voglio restituire solo il valore –