Jquery ajax post return data, Uncaught ReferenceError: les données ne sont pas définies

J’ai un script qui saisit le champ de texte d’entrée à partir d’un conteneur div appelé le panneau de protection. Je fais un appel post ajax pour que ce champ de texte soit vérifié dans le backend. Si une personne entre le bon mot de passe, nous allons afficher un autre panneau de conteneur div.

 $("#protectivepanel").submit(function(event) { $.ajax({ type: "POST", url: "/users/sortingal_signup_validation", data: $("#protectivepanel").serialize(), success: function(data){ console.log('data request succeeded'); return data } }); event.preventDefault() }); $(document).ready(function(){ $("#the_submit_button").click(function(event){ event.preventDefault(); console.log('event.preventDefault'); if (data.success){ console.log('data'); $("#protectivepanel").hide() $("#salespanel > div").removeClass("hide") } else { $("#protectivepanel").show() } }); });  

voici la méthode qui vérifie avec

  def sortingal_signup_validation @password = params['password'] if @password == 'sales' render :json => { "success" => "true" } else render :json => { "success" => "false" } end end 

Maintenant, je veux qu’il renvoie les données JSON et si c’est un succès, nous dévoilons le panneau dans le script.

ma console chrome a ceci lorsque je saisis “ventes” dans ma zone de texte et que je clique sur Envoyer

 Uncaught ReferenceError: data is not defined 

Voici ma forme si nécessaire

 

Je ne comprends pas si je fais le rappel correctement. Le journal de mon serveur ne montre pas le post-appel ajax. Comment savoir si les données renvoyées sont correctes?

Le e.preventDefault de l’ #the_submit_button de clic de #the_submit_button empêche la soumission du formulaire qui effectue l’appel ajax. Puisque l’événement submit est lié en dehors de document.ready , il est possible que rien ne soit lié non plus.

Enfin, vous ne pouvez pas revenir du rappel ajax. Tout ce qui dépend du résultat du rappel doit être effectué dans le cadre du rappel. Corrigez ces trois choses:

  1. Ne pas preventDefault pour l’événement de clic du bouton d’ preventDefault
  2. Assurez-vous que #protectivepanel existe lorsque vous vous y #protectivepanel .
  3. Déplacez la fonctionnalité hide / removeClass dans votre fonction de rappel de success . Vous pouvez également vouloir fournir un rappel d’ error .