it-swarm.com.de

wie bekomme ich GET und POST Variablen mit JQuery?

Wie bekomme ich mit JQuery einfach GET- und POST-Werte?

Was ich tun möchte, ist so etwas:

$('#container-1 > ul').tabs().tabs('select', $_GET('selectedTabIndex'));
92
Edward Tanguay

Für GET-Parameter können Sie sie aus document.location.search entnehmen:

var $_GET = {};

document.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function () {
    function decode(s) {
        return decodeURIComponent(s.split("+").join(" "));
    }

    $_GET[decode(arguments[1])] = decode(arguments[2]);
});

document.write($_GET["test"]);

Für die Parameter POST können Sie das $_POST-Objekt im JSON-Format in ein <script>-Tag serialisieren:

<script type="text/javascript">
var $_POST = <?php echo json_encode($_POST); ?>;

document.write($_POST["test"]);
</script>

Wenn Sie gerade dabei sind (Dinge auf Serverseite zu erledigen), können Sie auch die GET-Parameter unter PHP erfassen:

var $_GET = <?php echo json_encode($_GET); ?>;

Hinweis: Sie benötigen PHP Version 5 oder höher, um die integrierte json_encode-Funktion verwenden zu können.


Update: Hier ist eine generischere Implementierung:

function getQueryParams(qs) {
    qs = qs.split("+").join(" ");
    var params = {},
        tokens,
        re = /[?&]?([^=]+)=([^&]*)/g;

    while (tokens = re.exec(qs)) {
        params[decodeURIComponent(tokens[1])]
            = decodeURIComponent(tokens[2]);
    }

    return params;
}

var $_GET = getQueryParams(document.location.search);
165
Ates Goral

Es gibt ein Plugin für jQuery, um GET-Parameter mit dem Namen .getUrlParams zu erhalten. 

Für POST ist die einzige Lösung die Verwendung von POST in einer JavaScript-Variablen mit PHP, wie von Moran vorgeschlagen.

15

warum nicht gutes altes PHP verwenden? Nehmen wir zum Beispiel an, wir erhalten einen GET-Parameter 'target':

function getTarget() {
    var targetParam = "<?php  echo $_GET['target'];  ?>";
    //alert(targetParam);
}
6
tony gil

Oder Sie können dieses http://plugins.jquery.com/project/parseQuery verwenden. Es ist kleiner als die meisten (449 Bytes) und gibt ein Objekt zurück, das Name-Wert-Paare darstellt.

5
Michael

Bei jeder serverseitigen Sprache müssen Sie die Variablen POST in Javascript ausgeben.

.NETZ

var my_post_variable = '<%= Request("post_variable") %>';

Achten Sie einfach auf leere Werte. Wenn die Variable, die Sie auszugeben versuchen, tatsächlich leer ist, wird ein Javascript-Syntaxfehler angezeigt. Wenn Sie wissen, dass es sich um einen String handelt, sollten Sie ihn in Anführungszeichen setzen. Wenn es sich um eine ganze Zahl handelt, möchten Sie vielleicht testen, ob sie tatsächlich existiert, bevor Sie die Zeile in Javascript schreiben.

3
EndangeredMassa

Hier ist etwas zum Sammeln aller GET-Variablen in einem globalen Objekt, einer über mehrere Jahre optimierten Routine. Seit dem Aufkommen von jQuery scheint es jetzt angebracht, sie in jQuery selbst zu speichern. Ich überprüfe mit John eine mögliche Kernimplementierung.

jQuery.extend({
    'Q' : window.location.search.length <= 1 ? {}
        : function(a){
            var i = a.length, 
                r = /%25/g,  // Ensure '%' is properly represented 
                h = {};      // (Safari auto-encodes '%', Firefox 1.5 does not)
            while(i--) {
                var p = a[i].split('=');
                h[ p[0] ] = r.test( p[1] ) ? decodeURIComponent( p[1] ) : p[1];
            }
            return h;
        }(window.location.search.substr(1).split('&'))
});

Verwendungsbeispiel:

switch ($.Q.event) {
    case 'new' :
        // http://www.site.com/?event=new
        $('#NewItemButton').trigger('click');
        break;
    default :
}

Hoffe das hilft. ;)

2
Matt Gardner

Sie können versuchen, Query String Object plugin für jQuery.

2
Burak Erdem

jQuery-Plugins scheinen nett zu sein, aber was ich brauchte, ist eine schnelle js-Funktion, um die get-Parameter zu analysieren .. Hier ist, was ich gefunden habe.

http://www.bloggingdeveloper.com/post/JavaScript-QueryString-ParseGet-QueryString-with-Client-Side-JavaScript.aspx

1

Wenn Ihr $ _GET mehrdimensional ist, können Sie Folgendes wünschen:

var $_GET = {};
document.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function () {
    function decode(s) {
            return decodeURIComponent(s.split("+").join(" "));
    }

    //handling for multidimensional arrays
    if(decode(arguments[1]).indexOf("[]") > 0){
        var newName = decode(arguments[1]).substring(0, decode(arguments[1]).length - 2);
        if(typeof $_GET[newName] == 'undefined'){
            $_GET[newName] = new Array();
        }
        $_GET[newName].Push(decode(arguments[2]));
    }else{
        $_GET[decode(arguments[1])] = decode(arguments[2]);
    }
});
1
WoodyNaDobhar

einfach, aber dennoch nützlich, um Werte/Werte von URL zu erhalten:

function getUrlVars() {
    var vars = [], hash, hashes = null;
    if (window.location.href.indexOf("?") && window.location.href.indexOf("&")) {
        hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    } else if (window.location.href.indexOf("?")) {
        hashes = window.location.href.slice(window.location.href.indexOf('?') + 1);
    }
    if (hashes != null) {
        for (var i = 0; i < hashes.length; i++) {
            hash = hashes[i].split('=');
            vars[hash[0]] = hash[1];
        }
    }
    return vars;
}

Ich habe es irgendwo im Internet gefunden, nur ein paar Fehler behoben

1
Lukas

Verwenden Sie folgende Funktion:

var splitUrl = function() {
    var vars = [], hash;
    var url = document.URL.split('?')[0];
    var p = document.URL.split('?')[1];
    if(p != undefined){
        p = p.split('&');
        for(var i = 0; i < p.length; i++){
            hash = p[i].split('=');
            vars.Push(hash[1]);
            vars[hash[0]] = hash[1];
        }
    }
    vars['url'] = url;
    return vars;
};

und Zugriffsvariablen als vars['index'], wobei 'index' der Name der get-Variablen ist.

1
ashsam786

Nur für das Protokoll wollte ich die Antwort auf diese Frage wissen, also habe ich eine PHP -Methode verwendet:

<script>
var jGets = new Array ();
<?
if(isset($_GET)) {
    foreach($_GET as $key => $val)
        echo "jGets[\"$key\"]=\"$val\";\n";
}
?>
</script>

Auf diese Weise kann mein gesamtes Javascript/jquery, das danach ausgeführt wird, auf alles in den jGets zugreifen. Es ist eine schöne, elegante Lösung, die ich fühle.

0
Chud37

Mein Ansatz:

var urlParams;
(window.onpopstate = function () {
var match,
      pl     = /\+/g,  Regex for replacing addition symbol with a space
       search = /([^&=]+)=?([^&]*)/g,
      decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
       query  = window.location.search.substring(1);
   urlParams = {};
   while (match = search.exec(query))
    urlParams[decode(match[1])] = decode(match[2]);
})();
0
otaxige_aol

Halte es einfach

ersetzen Sie VARIABLE_KEY mit dem Schlüssel der Variablen, um dessen Wert zu erhalten

 var get_value = window.location.href.match(/(?<=VARIABLE_KEY=)(.*?)[^&]+/)[0]; 
0
Kareem