2016-07-07 3 views
1

Ich möchte eine Weiterleitung durchführen, möchte aber auch zusätzliche Informationen mitschicken.Wie kann ich mit zusätzlichen Informationen in jquery umleiten?

Ich habe versucht, den Wert von window.location.href zu ändern, aber das scheint nicht die zusätzlichen Informationen zu übergeben.

ich auch, wie ich

$.get(
     new_url, 
     {data : "mydata"}, 
     function(data) { 
      alert('page content: ' + data); 
     } 
    ); 

tun kann, und das wird den HTML-Inhalt der neuen Seite angezeigt, aber das hilft nicht mit tatsächlich dorthin zu gelangen. Wie kann ich das erreichen?

Edit: Ich fühle mich, als müsste ich das furchtbar formulieren, weil ich ziemlich sicher bin, dass das eine einfache/häufige Aufgabe ist. Dies sollte nicht etwas sein, das Cookies erfordern würde - es sollte im Grunde wie eine Postanfrage sein (denke ich).

+1

Können Sie 'localStorage' nicht verwenden? – evolutionxbox

+1

Warte, was hast du probiert? Funktioniert es nicht "//test.com? Extraparam = what"? Jetzt frage ich mich nur, was Sie mit 'zusätzlichen Informationen 'meinen ??? Erklären Sie stattdessen Ihr erwartetes Verhalten –

+1

Sie können Formular in jQuery erzeugen und es ('POST' /' GET') senden –

Antwort

0

Sie haben ein paar verschiedene Möglichkeiten:

  • URI-Variablen - Sie können zusätzliche Daten an die URL anhängen, indem Sie ein Fragezeichen anhängen (?) gefolgt von einer Schlüsselmenge, die durch ein Und-Zeichen (=) getrennt ist, wobei jede Variable durch ein kaufmännisches Und getrennt ist (&). Beispiel: http://www.google.com/search?q=javascript+url+variables&ie=UTF-8 gibt Ihnen einen Link zu einer Google-Suche nach "JavaScript-URL-Variablen" mit der UTF-8-Codierung. Ihr PHP-Code oder JavaScript müsste diese Variablen weitergeben und verarbeiten. Bei Verwendung von JavaScript ist eine nette Bibliothek zur Verarbeitung von URLs URI.js oder mit PHP können Sie die Funktionen parse_url und http_build_query verwenden. Sie können dies mit window.location.href; zum Beispiel: window.location.href = "http://www.google.com/search?q=javascript+url+variables&ie=UTF-8" (ersetzen Sie die URL von Google durch die, die Sie erstellt oder in einer Variablen festgelegt haben).
  • Storage API - Sie können die localStorage- oder sessionStorage-Eigenschaften verwenden, um Informationen mithilfe von JavaScript zu speichern und abzurufen (Informationen werden im Browser des Benutzers gespeichert - unterstützt von IE 8 und höher und allen anderen gängigen Browsern). Beachten Sie, dass dies nur JavaScript ist, es sei denn, Sie greifen die Daten mit JavaScript auf und leiten sie über URL-Variablen, Formular, AJAX-Anfrage usw. an Ihren PHP-Server weiter.
  • Cookie - Sie können zusätzliche Informationen in einem Cookie speichern - wie auch immer schwieriger, da Sie Ihre Variablen als parsable string (möglicherweise JSON) einrichten müssen und daran denken, die Zeichenkette beim Setzen/Abrufen des Cookies zu codieren/decodieren. Ich empfehle diese Methode nicht.
  • IndexedDB API - Dies ist eine erweiterte Client-Seite/Browser Speichermechanismus und derzeit nur in IE 10 und neuer (und fast allen anderen Browsern) unterstützt.Es werden auch noch Änderungen an dem Standard vorgenommen, was bedeutet, dass neuere Versionen von Browsern aktuelle Implementierungen brechen oder fehlerhaft sein können. Wenn Sie nur einen einfachen Schlüssel-Wert-Speicher benötigen (keine SQL-ähnliche Datenbank), sollten Sie bei einer der obigen Optionen bleiben.
+0

URI Variablen waren, was es für mich getan hat. :) –

+0

@Everyone_Else - Ich bin froh, dass du es herausgefunden hast :-) – Jim

0

Sie das Fenster zu öffnen Methode können Ihre Benutzer umleiten, und denken Sie daran verwenden „_self“

window.open('url','_self'); 
+0

Vielen Dank für Ihre Antwort, aber das erlaubt mir keine zusätzlichen Informationen weiterzugeben. –

+0

Ich verstehe nicht, mit welchem ​​Problem Sie konfrontiert sind, können Sie mir mehr erzählen? –

0

Vorzugsweise würden Sie die Daten in localStorage speichern und zu einem Cookie zurückfallen (Ich mag js-cookie).

Hier sind die beiden Hilfsfunktionen Sie benötigen, um Daten zu speichern und abzurufen:

function setMultiPageData(itemName, data) { 
    var dataStr = JSON.stringify(data); 

    var hasLocalStorage = typeof localStorage !== 'undefined'; 
    if (hasLocalStorage) { 
     localStorage.setItem(itemName, dataStr); 
    } 
    else { 
     Cookies.set(itemName, dataStr, { path: '/' }); // path set to root to make cookie available on any page 
    } 
} 

function getMultiPageData(itemName) { 
    var data = null; 

    var hasLocalStorage = typeof localStorage !== 'undefined'; 
    if (hasLocalStorage) { 
     data = localStorage.getItem(itemName); 
    } 

    if (!hasLocalStorage || data === null) { 
     data = Cookies.get(itemName); 
    } 

    var parsedObject = null; 
    try { 
     parsedObject = JSON.parse(data); 
    } 
    catch (ex) { 
     console.log(ex); // remove in production 
    } 

    return parsedObject; 
} 

Nutzung:

var data = { first: 'this is the first thing', second: 'this is the second thing' }; 
setMultiPageData('stackoverflow-test', data); 

// go to a new page 
var retrievedData = getMultiPageData('stackoverflow-test'); 
if (retrievedData === null) { 
    console.log('something went wrong') 
} 
else { 
    console.log(retrievedData); // { first: 'this is the first thing', second: 'this is the second thing' } 
} 
Verwandte Themen