2010-12-03 8 views
8

Ich bin relativ neu zu Jquery und ich frage mich, wie würde man Variablen auf eine andere Seite schreiben und dann umleiten? Ich verwendet Ajax-Funktion arbeitet die Umleitung in Ordnung, aber keine Variablen in POST erfasst (sie sind leer)Übergabe von Variablen mit POST auf eine andere Seite mit Jquery

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

    }); 
} 

in meiner aspx Datei

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

gnomixa - Ich bin hier vielleicht weit von der Basis entfernt, aber es sieht für mich so aus, als ob Sie den Zweck des Ajax-Aufrufs falsch verstehen würden. Es scheint, als ob Sie einige Werte an eine Seite senden möchten, so als würden Sie ein Formular senden (im Gegensatz zu asynchron, was bedeutet, dass Sie nicht von Ihrer aktuellen Seite weg navigieren). Ist das korrekt? – Ender

+0

ja, du hast Recht. Ist das möglich, ohne ein Formular zu senden? – sarsnake

+0

ich aktualisierte meine Antwort, ich denke, das ist, was Sie tun möchten – kobe

Antwort

2

Diese Antwort ist nur für eine schnelle Lösung

warum don Sie gerade als Query-String übergeben hier

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

Code von jquery Website

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

als Hinweis: Angesichts meines Szenarios, siehe oben, war dies der beste Weg, dies zu tun. – sarsnake

+0

in asp netnet normalerweise das Formular an seine Ursprungsseite. Aus diesem Grund habe ich die Variablen mit Querystring übergeben. Man könnte natürlich das Formular auf seiner Seite einreichen, dann mit den POST-Variablen dort umgehen und dann zu destination.html umleiten. Aber ich habe den einfachen Weg gewählt. – sarsnake

3
$.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"; 
     } 

}); 

Vom $.ajax documentation (data Option) :

Daten, die an den Server gesendet werden. Es wird in eine Abfrage konvertiert Zeichenfolge, wenn nicht bereits eine Zeichenfolge. Es ist an die URL für GET-Anfragen angehängt. Siehe die Option processData, um die automatische Verarbeitung dieser zu verhindern. Objekt muss Schlüssel/Wert-Paare sein. Wenn der Wert ein Array ist, jQuery serialisiert mehrere Werte mit gleichen Schlüssel basierend auf dem Wert der traditionellen Einstellung (unten beschrieben).

Stellen Sie außerdem sicher zu return false vom Ende des Handlers einreichen (oder was auch immer den Ajax-Aufruf ausgelöst wird), um sicherzustellen, dass eine ‚normale‘ Umleitung geschieht nicht.

+0

@ Karim, was ist der Unterschied zwischen seinem Code und Ihrem Code abgesehen von Daten Hash // – kobe

+0

funktioniert nicht. versuchte das schon. – sarsnake

+0

@gov - der Datenparameter ist der signifikante Unterschied. Es muss entweder ein Objekt oder eine Zeichenfolge sein. Er kam an einem seltsamen Objekt vorbei, das nicht funktionieren würde. – karim79

0

Werfen Sie einen Blick auf die „Daten“ Option auf dieser doc Seite: http://api.jquery.com/jQuery.ajax/

Ihr Problem ist, dass Sie eine JSON-String übergeben versuchen (und es gilt eine Zeichenfolge übergeben), aber wenn Sie passieren Eine Zeichenfolge, jQuery erwartet eine parametrisierte Abfragezeichenfolge. Wenn Sie ein Json-Objekt übergeben möchten, sollte es keine Zeichenfolge sein.

Beachten Sie jedoch, dass json-Objekte, die auf diese Weise übergeben werden, von jQuery in parametrisierte Abfragezeichenfolgen konvertiert werden. Wenn dies nicht unpraktisch ist (wie in diesem Fall nur ein Wert), können Sie sie auch übergeben auf diese Weise beginnen und speichern Sie das Skript etwas Arbeit.

0

Wenn Sie weniger Code wie zu tun dies:

  1. enthalten jquery.redirect.min.js in Ihrem Javascript (js) Ordner.
  2. Datei laden NACH JQUERY Laden Skript:

    <script type='text/javascript' src='jquery.js'> 
    </script> 
    
    <script type='text/javascript' src='jquery.redirect.min.js'> 
    </script> 
    
  3. Einfach gewünschten Parameter auf der nächsten Zeile (copy/paste) in Ihrem JavaScript-Code ersetzen:

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

Das ist das ist einfachste und schnellste Methode, die ich gefunden habe, um Variablen auf einer anderen Seite zu veröffentlichen, ohne das Formular-Tag zu verwenden. Viel Glück!

+1

Der Trick mit Code in einer Liste besteht darin, zusätzliche vier Leerzeichen (insgesamt 8 Leerzeichen) anzuhängen, um es als Code zu formatieren. –

Verwandte Themen