2010-04-26 7 views
3

Je vais avoir du mal à obtenir une réponse de retour d'un appel ajax Jquery ...Jquery obtenir les détails du tableau

(Il est un script pour authentifier un utilisateur, et doit retourner leur nom et l'ID utilisateur. Je crois comprendre que je pourrais coder comme JSON et obtenir les données dans le format ci-dessous.

il retourne une erreur de « non défini » pour l'alerte().

le javascript

$.ajax({ 
type: "POST", 
url: "myURL.php", 
data: {username: username, password: password}, 
success: function(results) { 
    //THIS IS WHERE THE PROBLEM IS 
    alert('Hi '+results.name); //Should be "Hi Basil Fawlty" 
    } 
}); 

Le PHP (myURL.php)

//This comes from a SQL call that returns the following name 
json_encode(array(
'id'=>1, 
'name'=>'Basil Fawlty' 
)); 

Toute aide ou idées sur l'endroit où je me trompe serait grandement apprécié!

Merci.

Solution: La solution consistait à ajouter un dataType.

+0

Quelle version de jQuery utilisez-vous? – webbiedave

+1

pouvez-vous poster ici ce que vous obtenez avec ** alerte (results.responceText) **? –

+0

J'utilisais la version 1.3. La sortie était "indéfini" – Matt

Répondre

4

Vous êtes absent dataType: "json":

$.ajax({ 
type: "POST", 
url: "myURL.php", 
dataType: "json", 
data: {username: username, password: password}, 
success: function(results) { 
    //THIS IS WHERE THE PROBLEM IS 
    alert('Hi '+results.name); //Should be "Hi Basil Fawlty" 
    } 
}); 

Une autre (moins verbeux) alternative est jQuery.getJSON si vous savez que vous obtenez JSON.

+0

Merci pour une réponse rapide! – Matt

1

Assurez-vous de définir votre dataType à JSON afin que vous obteniez l'objet de réponse dans la méthode de succès, comme celui-ci:

$.ajax({ 
type: "POST", 
url: "myURL.php", 
dataType: "json", 
data: {username: username, password: password}, 
success: function(results) { 
    alert('Hi '+results.name); 
} 
}); 

Details for dataType can be found here.

Alternativement, you can do this:

$.getJSON("myURL.php", {username: username, password: password}, 
    function(results) { 
    alert('Hi '+results.name); 
}); 
+0

Merci pour le lien vers le dataType et les informations sur getJSON. – Matt

1

je suppose que vous attendez JSON, mais vous obtenez une chaîne.

1

Soit vous devez spécifier un type de données dans la demande comme ceci:

$.ajax({ 
type: "POST", 
url: "myURL.php", 
data: {username: username, password: password}, 
dataType: "json", 
success: function(results) { 
    //THIS IS WHERE THE PROBLEM IS 
    alert('Hi '+results.name); //Should be "Hi Basil Fawlty" 
    } 
}); 

ou vous pouvez définir le type de contenu à partir de PHP en utilisant

header("Content-Type: application/json"); 
3

Si vous utilisez jQuery < 1.4, vous doit spécifier dataType: "json".

Au 1.4, dataType par défaut:

Devinez Intelligent (xml, JSON, scénario, ou html)

Mais cela exige que l'en-tête de réponse contient la chaîne "JSON" .Donc, vous voulez envoyer:

header('Content-type: application/json');

Cette flexibilité nouvellement ajoutée avec dataType permet des gestionnaires de répondre à plusieurs types retourné.

Si le problème persiste, vous aurez envie d'alerter toute la réponse alert(results); pour voir ce qui est réellement retourné.

Beaucoup de réponses similaires ici. Je ne sais pas qui a commencé, mais celui qui a sans aucun doute envahi la Pologne.

+0

Merci pour la réponse. Je voterais deux fois si je pouvais pour le commentaire de la Pologne! – Matt

+0

Nous étions tous composons en même temps je pense. – Geoff

Questions connexes