12
votes

JavaScript: Envoi de poste, redirection de la réponse

J'ai une image avec un oncclick. Lorsque le clic événement incendie, je souhaite envoyer un message HTTP et avoir la fenêtre.Location rediriger vers la réponse au poteau. Comment puis-je faire ça?


0 commentaires

6 Réponses :


13
votes

En supposant que vous souhaitez envoyer la requête de post de manière asynchrone, vous pouvez vérifier l'exemple ci-dessous pour vous permettre d'aller dans la bonne direction:

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);
}


2 commentaires

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: Cela dépend de ce que vous revenez de votre script de serveur. Si vous retournez un texte simple simple, http.responsetext tiendra juste l'URL. Y a-t-il une raison particulière pour laquelle votre script renvoie HTML?



1
votes

Utilisez une image de type d'entrée.

<form action="someUrl.html" method="POST">
    <input type="image" src="img.png" width="30" height="30" alt="Submit">
</form>


0 commentaires

16
votes

Il suffit de lier le bouton sur la méthode de soumission d'un élément de formulaire et que la redirection se produira 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>


4 commentaires

Cela ne traite pas d'une adresse de redirection du corps de réponse.


Aha, j'ai manqué 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 correctement la question, même s'il a reçu 3 voix. (+1 pour compenser les bowvotes)


Merci Daniel; Je me suis initialement demandé pourquoi vous aviez suggéré d'utiliser un XHR pour cela, mais à la lecture de la relecture, je pense que c'est ce que l'Asker avait l'intention, d'obtenir un endroit comme une réponse du poste et d'y aller et il faut donc un XHR. Je reçois le sentiment que cela pourrait être résolu d'une autre manière, cependant, si l'administrateur a fourni plus de détails.



2
votes

Utilisation de JQUERY Postez les données et rediriger vers votre emplacement souhaité, comme si: XXX

Vous pouvez supprimer les données : 'Formvalue = Quel qu'estvalue', S'il n'y a pas de données à passer à la page que vous souhaitez poster à.


1 commentaires

Ne fonctionne pas comme prévu. 'Data' récupère la réponse de la demande, dans ce cas, le fichier "reçusata.asp" et non une URL.



3
votes

au lieu de fenêtre.location = http.responsetext Utilisez les éléments suivants: xxx

document.open () efface le contenu actuel de la page et document.write () insère le code HTML de réponse dans votre page.


0 commentaires

3
votes

Vous pouvez utiliser cette fonction que j'ai faite: xxx


1 commentaires

Serait mieux si vous collez ici votre code pour voir et en discuter.