Wie jquery zu manipulieren, die querystring
Habe ich ein select-dropdown-Liste mit id ' s zugeordnet zu Werten.
Auf das onChange-Ereignis möchte ich umleiten auf die gleiche url mit 'id=Wert' an den querystring.
Wie kann ich überprüfen, dass das 'id' - option nicht bereits im querystring (ich will nicht mehrere Werte) und ersetzen /append als notwendig.
Wie kann ich überprüfen, ob '?' ist bereits in der querystring und Anhängen an die url, wenn Ihr nicht.
Gibt es eine einfache Möglichkeit mit jquery zu tun?
Muss es tun, etwas ähnliches unter der Haube für $().ajax(url, {options})
Anrufe.
Ich hatte gehofft, ich könnte einfach tun $().redirect( url, { id : $(this).val() })
oder somesuch.
Vielen Dank im Voraus.
Hinweis: Diese Seite kann oder auch nicht haben ein paar verschiedene Abfrage übergebenen Optionen (die Standardeinstellungen auf eine andere form Optionen) ersetzt damit das ganze querystring ist keine option.
<html>
<head><script type="text/javascript" src="/jquery-1.3.2.min.js"></script></head>
<body>
<script>
$(function(){
$('#selector').change(function(){
//problem if 'id' option already exists
var url = location.href + '?;id=' + $(this).val();
location.assign( url );
});
});
</script>
<a href="#" onclick="location.assign( location.pathname )">reset</a>
<form>
<select id='selector' name='id'>
<option value='1'>one</option>
<option value='2'>two</option>
<option value='3'>three</option>
</select>
</form>
</body>
</html>
- mögliche Duplikate von querystring Codierung eines javascript-Objekts
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich landete mit einem RegExp-match überschreiben die Optionen.
jQuery.param nimmt einen hash und serialises es zu einer query_string
aber ist es nicht die inverse (Aufbrechen einer query_string).
Dann in der html -
Danke an alle, die geantwortet haben.
Basierend auf CoffeeMonster Antwort:
Gibt es ein problem, wenn die Lage.href enthält eine hash-Teil:
www.example.com#hash
wirdwww.example.com#hash?id=whatever
die Ergebnisse in?id=whatever
nicht vom server interpretiert.Fixiert es durch das entfernen des hash " - Teil der url:
url.split("#")[0];
Nun
www.example.com#hash
wirdwww.example.com?id=whatever
Einstellung
window.location.search
aktualisieren der url-query-string (und überschreibt einen Wert, wenn es bereits vorhanden ist).search
für einen 'suchen', querystring-parameter. Wirklichsearch
bedeutet, dass der komplette querystring in der DOM-location-Objekt.Diese funktioniert wie ein Charme:
Versuchen Sie es mit der split-Funktion:
split
gibt eine Liste aus den Strings aufgeteilt, die durch den string (z.B. '?'), mit diesem string entfernt.Ich vermute, dass die angebliche Lösung ist nicht die Arbeit mit bestimmten Variablen-Namen. Vor allem die Zeile:
Wenn Schlüssel ist eine Zeichenfolge Gegenwart anderer Stelle innerhalb des querystrings, die auftreten werden fälschlicherweise ersetzt, die auch (versuchen Sie, ein Buchstabe, z.B. 'a'). Dies ist, weil die regex lässt die string-Grenzen öffnen (führende ';' und das nachfolgende '=' sind beide optional). Vielleicht die epxression besser etwas wie:
Obwohl ich es noch nicht getestet noch nicht.
client_id=12;project_id=45;
etc. aber ich sehe, wie leicht es zu brechen mit nurid=
ich denke, ich werde gehen mit so etwas wieRegExp( '[;&]?\b' ... )
testen, wenn ich an die Arbeit. Danke.