J'ai une image avec un onclick. Lorsque l'événement click se déclenche, je souhaite envoyer un POST HTTP et rediriger la fenêtre window.location vers la réponse au POST. Comment puis je faire ça?JavaScript: Envoyer POST, rediriger vers la réponse
Répondre
En supposant que vous avez besoin d'envoyer la demande POST de manière asynchrone, vous pouvez consulter l'exemple ci-dessous pour vous aider à aller dans la bonne direction:
<img src="my_image.png" onClick="postOnClick();">
vous avez alors besoin d'une fonction JavaScript qui présente un HTTP POST asynchrone demande et redirige le navigateur vers une URL reçue de la réponse HTTP. Vous devriez être en mesure d'utiliser XMLHttpRequest
pour un tel appel asynchrone, comme dans l'exemple suivant:
function postOnClick()
{
var http = new XMLHttpRequest();
var params = "arg1=value1&arg2=value2";
http.open("POST", "post_data.php", true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {
if (http.readyState == 4 && http.status == 200) {
window.location = http.responseText;
}
}
http.send(params);
}
Notez que pour un appel vraiment cross-browser XMLHttpRequest
, vous pouvez utiliser un cross-browser standard conforme XMLHttpRequest mise en œuvre comme XMLHttpRequest.js, sauf si vous utilisez un cadre JavaScript comme jQuery, Prototype, YUI, ExtJS, et al.
En outre, notez également que ce qui précède ne fonctionnera que si vous postez sur un script hébergé dans le même domaine, sinon vous violerez les same-origin policy et les navigateurs Web modernes refuseront d'envoyer la demande.
Utilisez une image de type entrée.
<form action="someUrl.html" method="POST">
<input type="image" src="img.png" width="30" height="30" alt="Submit">
</form>
En cliquant sur l'image que vous allez être redirigé vers « someUrl.html » et un message sera envoyé à lui
Il suffit de lier le bouton à présenter la méthode d'un élément de forme, et la redirection va arriver naturellement.
<script type='text/javascript'>
function form_send(){
f=document.getElementById('the_form');
if(f){
f.submit();
}
}
</script>
<form method='post' action='your_post_url.html' id='the_form'>
<input type='hidden' value='whatever'>
</form>
<span id='subm' onclick='form_send()'>Submit</span>
Cela ne gère pas l'obtention d'une adresse de redirection à partir du corps de la réponse. – friedo
Aha, j'ai raté cette partie de la question. Cela aurait pu être formulé plus clairement. –
Je suis d'accord avec la légère ambiguïté de la question.Je ne suis même pas sûr que ma réponse aborde la question correctement, même si elle a reçu trois votes. (+1 pour compenser les downvotes) –
En utilisant jQuery les données en post et redirigent à l'emplacement souhaité comme ceci:
$.ajax({
type: 'POST',
url: 'receivedata.asp',
data: 'formValue=someValue',
success: function(data){
window.location = data;
}
});
Vous pouvez retirer le data: 'formValue=someValue',
s'il n'y a pas de données pour passer à la page que vous souhaitez publier sur.
Ne fonctionne pas comme prévu. 'data' récupère la réponse de la requête, dans ce cas le fichier 'receivedata.asp' et non une URL. – pctroll
Au lieu de window.location = http.responseText
utiliser les éléments suivants:
http.onreadystatechange = function() {
if (http.readyState == 4 && http.status == 200) {
document.open();
document.write(http.responseText);
}
}
document.open()
efface le contenu actuel de la page et la réponse document.write()
insère du code html dans votre page.
Vous pouvez utiliser cette fonction i fait:
Serait mieux si vous collez ici votre code pour voir et discuter à ce sujet. –
- 1. rediriger vers POST HttpWebRequest
- 2. rediriger vers la page suivante
- 3. javascript: rediriger vers une page?
- 4. Obtenir la réponse de redirection jQuery post
- 5. rediriger et envoyer la variable via js
- 6. Réponse d'image via POST
- 7. Réponse POST trop longue
- 8. complète POST et rediriger vers un site tiers
- 9. PHP - Rediriger et envoyer des données via POST
- 10. Envoyer une post-variable avec javascript?
- 11. POST XML vers URL avec PHP et réponse de poignée
- 12. rediriger vers une URL externe sur le formulaire envoyer
- 13. rediriger vers la page membre
- 14. rediriger vers la page actuelle
- 15. comment rediriger vers une URL dans la vue mvc
- 16. Envoyer POST du site PHP Zend-Framework
- 17. Extraire l'URL de la réponse xml et la rediriger
- 18. Comment envoyer du code XML vers un iframe avec JavaScript
- 19. Rediriger vers paiement PayPal
- 20. Puis-je rediriger vers une requête javascript vers une autre action javascript?
- 21. Rediriger la sortie Trace vers la console
- 22. Rediriger la sortie audio vers la ligne
- 23. Publier/Rediriger/Obtenir: Rediriger vers l'itinéraire spécifique
- 24. Envoyer tableau POST
- 25. javascript envoyer une requête POST au serveur distant
- 26. Zend Framework: comment rediriger une requête POST?
- 27. php - Comment rediriger la page avec les données post
- 28. Comment rediriger default.php vers/
- 29. Rediriger tout vers index.php
- 30. Javascript Post on Formulaire Envoyer une nouvelle fenêtre
Cela ne fonctionne pas. http.responseText est le corps du document HTML (post_data.php). Vous ne pouvez pas rediriger vers une chaîne HTML. – JamesBrownIsDead
@JamesBrownIsDead: Cela dépend de ce que vous renvoyez de votre script côté serveur. Si vous renvoyez un texte brut simple, 'http.responseText' ne contient que l'URL. Y a-t-il une raison particulière pour laquelle votre script renvoie du code HTML? –