2009-10-16 8 views
0

Je suis un peu perplexe avec le problème suivant et j'ai peur que la solution soit trop évidente mais je ne la vois plus. Problème, comment ça se fait que ce code jQuery fonctionne:

$(document).ready(function() {  
    var q = $(".box").val();  
    $.get("db.php", {searchterm: "test", type: "search", time: "2pm" }, 
     function(twitter){ 
      var tweets = JSON.parse(twitter); 
     } 
    ); 

mais si je fais partie d'un événement de clic alors il ne fonctionnera pas:

$(document).ready(function() {  
    $(".btn").click(function() {  
    var q = $(".box").val();  
    $.get("db.php", { searchterm: "test", type: "search", time: "2pm" }, 
     function(twitter){ 
      var tweets = JSON.parse(twitter); 
     } 
    ); 
}); 

Bien sûr, ma page html a un Bouton avec le nom de classe 'btn'

Firebug clignote un message d'erreur dans jQuery mais réinitialise la console tout de suite afin que je ne puisse pas lire ou copier l'erreur du journal. Aucune suggestion?

Répondre

3

Peut-être que vous avez juste besoin de return false; à partir du gestionnaire de clic? Cela empêchera l'action par défaut pour le lien, c'est-à-dire la navigation vers l'URL.

+0

ou utilisez 'preventDefault();' –

+0

Greg a fourni la solution sans remarquer le bug :) –

+0

Merci beaucoup! J'ai besoin d'étudier ce concept faux retour :) – DrDee

0

Vous rataient une bonne fermeture });

$(document).ready(function() {  
    $(".btn").click(function() {  
     var q = $(".box").val();  
     $.get("db.php", {searchterm: "test", type: "search", time: "2pm"}, function(twitter){ 
      var tweets = JSON.parse(twitter); 
     }); 
     return false; 
    }); 
}); 

return false est aussi un bon choix (de crédit @ Greg).

0

@ cballou cela répond à votre question, mais BTW, même si Firebug se vide après avoir flashé jusqu'à une erreur, vous pouvez récupérer l'erreur en ouvrant l'erreur par défaut de Firefox Console (Ctrl + Maj + J ou Outils> Console d'erreurs).

+0

Bon à savoir, merci. – Tom

+0

le manquant}): était une faute de frappe, le retour faux fixé le problème – DrDee

+0

Ah oui. Le 'return false;' empêche l'événement d'être passé au gestionnaire par défaut pour cet événement - par exemple. sur un lien d'ancrage, l'action par défaut serait de rediriger la page vers l'URL liée. – Premasagar