2010-04-14 10 views
2

J'ai cherché le site et je l'ai trouvé diverses solutions, la plupart d'entre eux suggérant en utilisantComment empêcher la redirection de formulaire après la soumission?

return false; 

Le problème est que j'utilise ce morceau de code pour soumettre le formulaire:

$(function() { 
    $("#snd").click(function() { 
     var dendar = "http://" + $("#inpt").val() + ":" + $("#pwd").val() + "secretsite.lol/something.xml"; 
     $("#formen").attr("action", dendar); 
     $("#formen").submit(); 
     alert(dendar); 
     return false; 
    }); 
}); 

L'alerte est juste là pour me faire savoir que le formulaire a été soumis ..

Merci les gars!

+0

Voulez-vous dire comment empêcher l'envoi d'un formulaire? – Mathew

+0

J'ai ajouté une réponse, mais en regardant votre code (trop complexe pour la tâche), je ne suis pas vraiment sûr de ce que vous essayez de faire. Principalement en raison du balisage manquant. –

+0

Non ne l'empêche pas de soumettre, j'ai besoin de soumettre mais sans redirection. Lorsque je clique sur le bouton formsubmit, je suis redirigé vers le fichier XML que j'essaie de publier. Le fait est que je reçois les post-données, donc mes formulaires sont affichés correctement, c'est juste la redirection que je veux empêcher. Désolé de ne pas être clair .. – Noor

Répondre

3

Qu'en est-il simplement d'utiliser un appel AJAX avec POST à ​​un gestionnaire de données? Cela ressemble à ce que vous voulez.

+0

Je ne suis pas sûr, mais AJAX ne fonctionne que si longtemps l'envoi de données est au même serveur que je poste à partir de? Si oui alors ce n'est pas une option .. – Noor

+0

Pourquoi voudriez-vous soumettre le serveur croisé? Il est possible de faire presque n'importe quoi à partir d'une fenêtre de navigateur avec javascript, tout dépend de ce que vous essayez de faire. N'oubliez pas que les services publicitaires chargent des annonces provenant de réseaux clients. Vous ne pensez pas que le serveur récupère toutes ces publicités et les injecte dans la page, n'est-ce pas? – jcolebrand

+0

Tout ce que vous pouvez faire avec HTML pur peut être fait avec javascript. Si vous pouvez vous soumettre maintenant à l'autre serveur, vous pouvez également jquery.ajax le poster sur ce serveur. – jcolebrand

4

Vous devez retourner false dans le gestionnaire d'événements de l'appel submit(), pas dans le gestionnaire de clic.

$("#formen").attr("action", dendar); $("#formen").submit(
    function() { 
     return false; 
    } 
); 

Comme indiqué par d'autres, cela empêchera la soumission du formulaire. Ce que vous voulez faire est de collecter les données du formulaire et de le soumettre en utilisant un appel Ajax.

$ .post (url, {var1: valeur1, var2: valeur2 etc ...});

+0

Salut, merci pour la réponse! Soit je suis bête et je ne sais pas comment tirer ça ou ça ne fonctionne pas avec mon code. Cela a complètement désactivé ma soumission, je ne reçois pas les formulaires affichés, et l'alerte ne s'affiche pas non plus (je mets dans l'alerte avant la déclaration de retour) .. – Noor

+0

Mais c'est exactement ce qu'il fait, il désactive la soumission entièrement. Apparemment, vous ne posez pas la bonne question. – jcolebrand

+0

Désolé ... J'ai besoin de mon formulaire pour envoyer des informations à un site, sans avoir à rediriger. Lorsque je clique sur le bouton soumettre, j'en ai besoin pour le faire, affichez l'information et alertez-moi juste que c'est fait cela .. – Noor

4

Vous ne pouvez pas empêcher une redirection, mais vous pouvez soumettre le formulaire dans un (éventuellement caché) iframe afin que vous ne laissez pas la page en cours

Ajax serait mieux si le poste est le même serveur comme la page en cours et que vous ne publiez des données de fichier

+0

Je vais essayer de faire ça, le post est fait sur un site qui ne m'appartient pas .. Merci! – Noor

2

en utilisant jquery 1.4:

$("#formen").live("submit",function(e) { 
    e.preventDefault(); 
} 

Cela permettra d'éviter la forme de soumettre réellement. Alors vous êtes libre de faire n'importe quoi avec les données qui étaient censées être postées (utilisez ajax, imprimez quelque chose sur la page ...).

+0

Vous ne savez pas exactement où placer ceci, est-ce que cela remplace les lignes de codage de soumission? – Noor

+0

@noor ajoutez-le où vous voulez, assurez-vous juste qu'il est appelé (sur document prêt par exemple) – marcgg