2009-07-23 9 views
1

Klick michWie Abfragestring Parameter und Werte mit Javascript (Jquery) abrufen?

$('.clickme').click(function(event) { 
event.preventDefault(); 
var stringId = $(this).attr("id"); 
    var mId = stringId.substring(2) 
.... 

ich den Wert von id abrufen ID des Ankerelement verwendet wird. Ich denke, ich sollte es direkt von href bekommen können. Wie kann ich den Wert von ID und Status von HREF (URL-Abfragezeichenfolge) abrufen?

Ich benutze Jquery.

Vielen Dank für Ihre Hilfe.

UPDATE: Auch wie bekomme ich alle URL-Wert .. d. H. "Test.php? Id = 100 & bla = blah"?

+0

Sie müssen es substring. Wenn Sie ein Beispiel brauchen, hinterlassen Sie einen Kommentar. –

Antwort

3

Dieser Code:

function querySt(ji) { 
    hu = $(".clickme").attr("href"); 
    gy = hu.split("&"); 
    for (i=0;i<gy.length;i++) { 
     ft = gy[i].split("="); 
     if (ft[0] == ji) { 
      return ft[1]; 
     } 
    } 
} 

es zu benutzen:

document.write(querySt("id")); 
document.write(querySt("status")); 

Antwort auf Ihre 'update':

http://ilovethecode.com/Javascript/Javascript-Tutorials-How_To-Easy/Get_Query_String_Using_Javascript.shtml

+0

danke für dich antwort .. – TigerTiger

+0

Ok .. also muss ich es durch eine for-Schleife finden? Ich dachte, ich könnte direkt darauf zugreifen .. etwas wie attr ("status") !!! – TigerTiger

+0

Jetzt können Sie, nur abfragenSt ("status"); Ich glaube nicht, dass jQuery eine eingebaute Funktion für die URI-Analyse hat. –

1
var stringId = $(this).attr("id"); // this will return p_100 
var stringId = $(this).attr("id").split('_')[1]; // this will return 100 

var attr= $(this).attr("href"); // this will return all href attribute value 

UPDATE

//href="test.php?id=100&status=pending&time=2009" 
var attrFromAnchor= $(this).attr("href").split('?')[1].split('&')[0].split('=')[1]; // returns 100 
+0

danke für deine Antwort .. ich kann Wert von ID des Elements (bereits getan) .. aber ich muss es von der URL von Anchor bekommen. – TigerTiger

+0

Werfen Sie einen Blick auf meine Antwort oben, es sollte funktionieren. –

+0

@Wbdvlpr Überprüfen Sie das Update –

1

Es gibt viele gute Lösungen hier aber ich dachte, ich meine eigene Post würde. Hier ist eine kurze, kleine Funktion, die ich zusammengestellt habe, die eine Abfrage-Zeichenfolge im Format von entweder window.location.search oder von einem bereitgestellten Suchzeichenfolge-Wert analysieren wird;

Es eine Hash-ID-Wert-Paare gibt, so dass Sie es in Form von Referenz könnten:

var values = getQueryParams(); 
values['id'] 
values['blah'] 

Hier ist der Code:

/* 
This function assumes that the query string provided will 
contain a ? character before the query string itself. 
It will not work if the ? is not present. 

In addition, sites which don't use ? to delimit the start of the query string 
(ie. Google) won't work properly with this script. 
*/ 
function getQueryParams(val) { 
    //Use the window.location.search if we don't have a val. 
    var query = val || window.location.search; 
    query = query.split('?')[1] 
    var pairs = query.split('&'); 
    var retval = {}; 
    var check = []; 
    for(var i = 0; i < pairs.length; i++) { 
     check = pairs[i].split('='); 
     retval[decodeURIComponent(check[0])] = decodeURIComponent(check[1]); 
    } 

    return retval; 
} 

Um den Wert des Abfrage-String aus der get URL ohne String-Parsing können Sie tun:

window.location.search.substr(1) 

Wenn Sie den Namen der Seite vor der? Sie müssen noch ein wenig String-Parsing tun:

var path = window.location.pathname.replace(/^.*\/(.*)$/,'$1'); 
var query = path + window.location.search; 
//If your URL is http://www.myserver.com/some/long/path/big_long%20file.php?some=file&equals=me 
//you will get: big_long%20file.php?some=file&equals=me 

hoffe, das hilft! Prost.

+0

Diese Implementierung berücksichtigt URL-codierte Namen und Werte nicht. –

+0

@Ates Goral Sie sind absolut richtig. Es berücksichtigt diesen Fall nicht. Ich habe meine Lösung gemäß Ihrem Vorschlag aktualisiert. – coderjoe

+0

Außerdem sollte eine Bedingung hinzugefügt werden, wenn nach der Initialisierung keine Abfragezeichenfolge vorhanden ist, d. 'if (! query) return [];' vor der 'query.split ('?') [1]' Zeile –

0

Hier ist eine kurze (noch vollständig) Implementierung für alle Name/Wert-Paare aus einer Abfrage-String bekommen:

function getQueryParams(qs) { 
    qs = qs.split("+").join(" "); 
    var params = {}; 
    var tokens; 

    while (tokens = /[?&]?([^=]+)=([^&]*)/g.exec(qs)) { 
     params[decodeURIComponent(tokens[1])] 
      = decodeURIComponent(tokens[2]); 
    } 

    return params; 
} 

//var query = getQueryParams(document.location.search); 
//alert(query.foo); 
+0

thx .. ich werde es versuchen. – TigerTiger

+0

Die One-Line Regexp funktioniert nicht mit Safari und IE (Endlosschleife). Die Lösung ist eine separate Zeile für "var pattern =/[? &]? ([^ =] +) = ([^ &]*)/g;", dann verwenden Sie "pattern.exec (qs)". BTW, was ist die "qs .split ('+') "für? Wenn die URL codiert ist, sollte es kein Pluszeichen geben. – Dingle

0

Keine Notwendigkeit für jQuery, diese Lösung auf allen Browsern funktioniert:

function querySt(ji) 
{ 
    hu = window.location.search.substring(1); 
    gy = hu.split("&"); 
    for (i=0;i<gy.length;i++) { 
    ft = gy[i].split("="); 
    if (ft[0] == ji) { 
    return ft[1]; 
    } 
    } 
    return ""; 
} 
0

Antworten hier sind veraltet jetzt.

Sehen Sie diese Lösung Vanilla JavaScript (ES5)

var qd = {}; // qd stands for query dict 
document.getElementById("p_100")[0].href.split("?")[1].split("&").forEach(function(item) {var k = item.split("=")[0], v = decodeURIComponent(item.split("=")[1]); (k in qd) ? qd[k].push(v) : qd[k] = [v,]}) 

Ich mag mit oneliner, es so zu tun, aber mir wurde gesagt, es ist nicht. hmm ... Wer würde die verketteten Funktionsaufrufe auf neue Zeilen aufteilen, oder?

Beispiel:

"test.php?id=100&status=pending&time=2009" 
> qd 
id: ["100"] 
status: ["pending"] 
time: ["2009"] 

// values can also be obtained like this 
> qd.id[0] // "100" 
> qd["id"][0] // "100" 

* Es gibt Arrays, weil es für mehrwertig Schlüssel optimiert ist. Suchen Sie here für Dummy Lösungen (ohne Arrays).

Anmerkung: zu lehren alte Browser die neuen .forEach Sie this polyfill von Mozilla (MDN) injizieren können.

Verwandte Themen