2010-03-25 5 views
1

J'ai la page JSP avec method = POST et action='/mydir/mypage/nextpage'Firefox 3.6 - location.href ne fonctionne pas dans JSP

J'ai un bouton:

<button title='Continue' onclick="this.form.perform.value='cancelButton'; javascript:doCloseWindow();">Continue</button> 

et méthode JavaScript comme:

function doCloseWindow(){   
    location.href = "https://abc.xyz.com/mydir/?param=123";    
} 

Il ne fonctionne pas dans Firefox 3.6. Au clic du bouton; il redirige vers le chemin que j'ai mentionné dans l'action de formulaire. Avec les données Tamper, je trouve que la requête va à l'URL (comme dans la méthode) avec GET, puis redirige vers l'URL d'action du formulaire.

J'ajouté return false dans l'appel de méthode aussi - javascript:doCloseWindow();return false

I fatigués diverses combinaisons comme

window.location.href = "https://abc.xyz.com/mydir/?param=123"; 
window.document.location.href = "https://abc.xyz.com/mydir/?param=123"; 
document.location.href = "https://abc.xyz.com/mydir/?param=123"; 

Mais sans succès.

+0

C'est "Firefox", pas "Fire Fox". :-) –

Répondre

1

Supprimer le "javascript:" avant l'appel à doCloseWindow.

À ce stade, vous avez déjà exécuté du code JavaScript dans ce gestionnaire d'événements - cela n'a aucun sens d'essayer de dire au navigateur que le code suivant est JavaScript.

+0

Retiré, ne fonctionne toujours pas – Anurag

+0

"Ne fonctionne pas" avec le même symptôme? Dans votre commentaire à la réponse de Dean J, vous mentionnez que "il va à cette URL, mais le statut est retourné comme 302, puis va à une autre URL par défaut". Si votre code envoie le navigateur à la bonne URL, mais que le serveur le redirige, votre code est correct; l'URL que vous utilisez est incorrecte ou le serveur fait quelque chose que vous n'attendiez pas. – Syntactic

+0

J'ai juste essayé de supprimer le javascript comme vous l'avez dit et d'utiliser 'return false' après l'appel de la méthode. Aussi j'ai enlevé la partie 'this.form.perform.value =' cancelButton '' et seulement cela fonctionne. J'ai essayé de définir la valeur ci-dessus dans ma méthode, encore une fois il soumet le formulaire et ne va pas à la nouvelle URL. Je ne comprends pas, chaque fois que j'essaie de faire une autre opération avant d'appeler la location.href, il soumet toujours le formulaire. – Anurag

0

Essayez de changer votre appel à Javascript:

function doCloseWindow(){ 
    alert('here'); 
    location.href = "https://abc.xyz.com/mydir/?param=123"; 
    return false; 
} 

Je me demande si la fonction est en fait en cours d'exécution.

+0

Il s'agit de la fonction. aussi je peux voir l'URL dans l'outil de données Tamper. Mais il n'est pas redirigé vers cette URL. J'utilise à la place de

+0

Merci beaucoup les gars ... cela fonctionne après avoir combiné vos suggestions et supprimer la partie this.form.perform .... Mais ne comprends pas pourquoi il soumet le formulaire si j'essaye de faire quelque chose avant d'appeler location.href – Anurag

Questions connexes