2010-01-06 7 views
1

J'essaie de faire fonctionner la fonction jquery getJSON. Ce qui suit semble très simple mais cela ne fonctionne pas.Fonction jQuery getJSON avec alerte ne fonctionnant pas

$("#edit-item-btn").live('click', function() { 
    var name = this.id; 
    $.getJSON("InfoRetrieve", 
     { theName : name }, 
     function(data) { 
     alert(name); 
    }); 
}); 
+0

convenu, format. Alerte-t-il quelque chose? ou même pas arriver à ça? Si ce n'est pas l'alerte, je peux seulement supposer que votre chemin ajax est incorrect ou ne pas retourner quelque chose correctement – brad

+0

non son ne rien alerter – Ankur

+0

cet exemple de code a trop peu} s. S'il vous plaît modifier pour le code entier - sauf si c'est le problème bien sûr :-) quoi spécifiquement 'ne fonctionne pas' –

Répondre

1

Avez-vous essayé d'utiliser Firebug ou Chrome Developer Tools pour voir quelles demandes sont faites?

Est-ce un fichier appelé InfoRetrieve existe dans le chemin actuel de votre site? Que retourne-t-il?

+0

J'ai essayé, mais je ne vois aucune demande faite quand j'utilise Firebug, c'est l'une des principales sources de confusion. Cependant, le clic sur le bouton est en cours d'enregistrement, j'ai déjà utilisé une alerte pour comprendre cela. – Ankur

+0

Oui InfoRetrieve est une servlet, je ne vais pas utiliser InfoRetrieve une fois que cela fonctionne, mais pour l'instant je veux juste que l'alerte fonctionne. – Ankur

2

Vous utilisez la variable name sur deux endroits, mais cette variable est jamais définie.

3
  1. Assurez-vous que le code environnant fonctionne avec votre DOM en remplaçant l'appel getJSON par un simple alert
  2. Assurez-vous que le chemin « InfoRetrieve » existe en réalité. Si vous remplacez votre nom de fichier dans la barre d'URL par InfoRetrieve renvoie-t-il JSON?
  3. function(data) doit être fermé avec un } avant de fermer le gestionnaire de clic.
  4. { theName : theName } plus de sens pour moi que les data. Êtes-vous sûr d'avoir saisi ce droit?
+0

La servlet doit-elle renvoyer un message JSON valide pour que l'alerte fonctionne? J'espérais régler cela plus tard, une fois que j'aurais mis en place la partie de la demande. A en juger par la lecture que j'ai faite, c'est ce sur quoi je travaille maintenant. – Ankur

2

ne devriez-vous faire alert (données)?

0

Je ne suis pas convaincu que votre code est correct. Essayez et voir ce qui se passe:

$("#edit-item-btn").live('click', function() { 
    var name = this.id; 
    $.getJSON("InfoRetrieve", 
     { theName : name }, 
     function(data) { 
      alert(data.name); 
    }); 
}); 

Cela devrait fonctionner si InfoRetrieve répond avec une chaîne JSON comme ceci:

{"name":"Sally Smith"} 

Quelques choses à noter:

  1. Vous envoyez un demande à ./InfoRetrieve dans le même répertoire que la page se trouve. Si vous utilisez une servlet, est-ce correct? Ou voulez-vous "/ servlet/InfoRequest"?
  2. Vous envoyez des données en entrée à InfoRetrieve avec une clé de "theName" et une valeur de tout ce que "this.id" est. Votre servlet sait-elle accepter cette entrée?
  3. Vous recevez ensuite une réponse de InfoRetrieve et "données" est défini sur un objet qui représente le json dans la réponse. Vous devez ensuite accéder aux propriétés des données pour obtenir les valeurs dans la réponse.
Questions connexes