9 votes

Transmettre des variables avec POST à une autre page avec Jquery

Je suis relativement novice en matière de Jquery et je me demandais comment les variables d'un message pouvaient être redirigées vers une autre page. J'ai utilisé la fonction ajax, la redirection fonctionne bien, mais aucune variable n'est capturée dans POST (elles sont vides).

function linkWO() {

    $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "LinkTagOut.aspx",
            dataType: "json",
            data: "{id=1}",
            complete:
            function () {
                window.location = "LinkTagOut.aspx";
            }

    });
}

dans mon fichier aspx

<a href="javascript:void(0);" onclick="return linkWO();"><span>Link</span></a>

4voto

karim79 Points 178055
$.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "LinkTagOut.aspx",
        dataType: "json",
        data: { id: 1 }, // or the string: 'id=1'
        complete:
        function () {
            window.location = "LinkTagOut.aspx";
        }

});

A partir de la Documentation $.ajax ( data ) :

Données à envoyer au serveur. Elles sont converties en chaîne si ce n'est pas déjà le cas. Elle est ajoutée Voir l'option processData pour éviter cela traitement automatique. L'objet doit être une paire paires clé/valeur. Si la valeur est un tableau, jQuery sérialise plusieurs valeurs avec même clé en fonction de la valeur de l'élément (décrit ci-dessous).

Veillez également à return false à la fin du gestionnaire de soumission (ou de ce qui déclenche l'appel ajax) pour s'assurer qu'une redirection "normale" n'est pas en train de se produire.

2voto

kobe Points 7925

Cette réponse est juste pour une solution rapide

pourquoi ne pas passer une chaîne de requête ici

window.location = "LinkTagOut.aspx?variabletopass=test"; 

<form id="target" action="destination.html">
  <input type="text" value="Hello there" />
  <input type="submit" value="Go" />
</form>
<div id="other">
  Trigger the handler
</div>

$('#target').submit(function() {
$.post('ajax/test.html', function(data) {      
});
  return false;
});

0voto

Ender Points 8243

Jetez un coup d'œil à l'option "données" sur cette page du document : http://api.jquery.com/jQuery.ajax/

Votre problème est que vous essayez de passer une chaîne json (et c'est valide de passer une chaîne), mais si vous passez une chaîne, jQuery s'attend à une chaîne de requête paramétrée. Si vous voulez passer un objet json, ce ne doit pas être une chaîne.

Cependant, notez que les objets json passés de cette manière seront convertis en chaîne de requête paramétrée par jQuery, donc si ce n'est pas gênant (comme dans ce cas, où vous n'avez qu'une seule valeur), vous pouvez tout aussi bien les passer de cette manière pour commencer et épargner du travail au script.

0voto

Alejo Toro Points 71

Si vous aimez moins coder, faites-le :

  1. inclure jquery.redirect.min.js dans votre dossier javascript (js).

  2. Chargement du fichier APRES le chargement de JQUERY script :

    <script type='text/javascript' src='jquery.js'> 
    </script>
    
    <script type='text/javascript' src='jquery.redirect.min.js'>
    </script>
  3. Il suffit de remplacer les paramètres souhaités sur la ligne suivante (copier/coller) dans votre code javascript :

    $().redirect('targeturl.html', {'post_var_1': 'value1', 'post_var_2': 'value2'});

C'est la méthode la plus simple et la plus rapide que j'ai trouvée pour envoyer des variables vers une autre page sans utiliser la balise form. Bonne chance !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X