2010-11-17 6 views
4

Donc j'ai une page html appelée A.html il a été appelé comme ça à partir de B.html: A.html?varString="bla-bla-bla" Est-il correct d'envoyer des args à JS? Comment analyser les arguments de JS?Comment lire une requête en utilisant Javascript?

(ne pas utiliser des cadres comme Jquery, travaillant dans IE6, FireFox 3)

+0

possible. duplicate of [Comment puis-je obtenir des valeurs de chaîne de requête en JavaScript?] (http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript) –

Répondre

6

Voici une fonction pour analyser la chaîne de requête. Passez le nom du paramètre et il renvoie la valeur.

function getQueryVariable(variable) 
{ 
    var query = window.location.search.substring(1); 
    var vars = query.split("&"); 
    for (var i=0;i<vars.length;i++) 
    { 
    var pair = vars[i].split("="); 
    if (pair[0] == variable) 
    { 
     return pair[1]; 
    } 
    } 
    return -1; //not found 
} 
6

Utilisation location.search:

alert(location.search); // will display everything from the ? onwards 

Vous voulez probablement séparer les différentes variables de la chaîne de requête afin que vous puissiez accéder à par leur nom:

var request = {}; 
var pairs = location.search.substring(1).split('&'); 
for (var i = 0; i < pairs.length; i++) { 
    var pair = pairs[i].split('='); 
    request[pair[0]] = pair[1]; 
} 

Ensuite, vous pouvez y accéder comme request['varString'] et que vous donneront "bla-bla-bla".

1

La plupart du temps vous souhaitez gérer les paramètres passés à votre page du côté serveur, mais si vous avez vos raisons pour lesquelles le faire côté client, voici un petit script que j'ai trouvé:

function gup(name) 
{ 
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
    var regexS = "[\\?&]"+name+"=([^&#]*)"; 
    var regex = new RegExp(regexS); 
    var results = regex.exec(window.location.href); 
    if(results == null) 
     return ""; 
    else 
     return results[1]; 
} 

Je ne l'ai pas testé, mais je suis sûr que ça va faire l'affaire. Il suffit de l'utiliser comme: gup('parameter') et il renverra la valeur du paramètre pour vous.

0

Pour analyser la chaîne de requête par JS, vous pouvez voir utiliser quelque chose comme

function getQueryValue(param) { 
     var queryStringArray = querystring && querystring.substring(1).split("&"); 
     for (var i=0, length = queryStringArray.length; i < length; i++) { 
      var token = queryStringArray[i], 
       firstPart = token && token.substring(0, token.indexOf("=")); 
      if (firstPart === param) { 
       return token.substring(token.indexOf("=") + 1, token.length); 
      } 
     } 
} 

Par ex Étant donné une URL "http://domain.com.au?aaa=bbb, vous pouvez appeler ce fn comme getQeuryValue (" aaa ") et vous obtiendrez" bbb "

J'ai téléchargé ce code sur Gist (bit . modifié pour être conforme à un modèle de module)

0

Merci à la nouvelle interface URLSearchParams, il devient plus facile:

var url = new URL("https://example.org/?foo=bar&foo2=bar2"); 
var params = url.searchParams; 

// Access to a variable 
console.log(params.get("foo")); 

// Loop over params 
for (var key of params.keys()) { 
    console.log(params.get(key)); 
} 

Vous devriez vérifier Mozilla Developer Network la compatibilité du navigateur, car il est une nouvelle API

Questions connexes