2013-03-20 4 views
1

J'ai le problème suivant:Comment obtenir des paramètres d'URL sans actualiser la page?

J'utilise la fonction suivante pour récupérer les paramètres GET d'une URL.

$(document).ready(function() {  
function getParam(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 (""); 
     } 
}); 

Par exemple, j'ai l'URL http://example.com/?radius=5&lat=31.312 et je veux avoir la valeur de « rayon »

var radius = getParam("radius"); 

Problème: Dans l'URL, je peux voir ce rayon a la valeur « 5 » mais quand Je cours console.log("radius " + radius); seulement après l'actualisation de la page du navigateur la valeur est affichée correctement.

Pourquoi la valeur n'est-elle pas récupérée correctement lors du chargement de la page pour la première fois? Est-ce que quelqu'un a une idée pour résoudre ce problème?

Je reçois les paramètres d'un formulaire soumis d'une autre html et je veux les utiliser sur le html actuel

+0

Définition de la fonction en dehors de $ (document) .ready, puis appelez votre fonction. –

+0

pas de doublon car la fonction fonctionne. J'ai besoin d'une solution pour exécuter la fonction après le chargement correct de l'URL et contient les valeurs –

+0

Problème résolu: Je viens de mettre la fonction ci-dessus dans une fonction setTimeout. Parfois, c'est plus facile que vous le pensez –

Répondre

0

Ceci est un programme standard pour la lecture des paramètres de chaîne de requête: http://www.webreference.com/programming/javascript/jkm/2.html

Télécharger param. js, à partir du lien au bas de cette page, sur votre site et l'inclure dans un élément de script:

<script src="[...]param.js"></script> 

Peu importe quelle étape de chargement de la page est en vous pouvez appeler le foncti n param() pour lire les paramètres, par exemple:

var q = param(); 
var radius = q.radius; 
0

vous van faire fonction comme ceci:

$.extend({ 
    getUrlVars: function(){ 
    var vars = [], hash; 
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 
    for(var i = 0; i < hashes.length; i++) 
    { 
     hash = hashes[i].split('='); 
     vars.push(hash[0]); 
     vars[hash[0]] = hash[1]; 
    } 
    return vars; 
    }, 
    getUrlVar: function(name){ 
    return $.getUrlVars()[name]; 
    } 
}); 

// Get object of URL parameters 
var allVars = $.getUrlVars(); 

// Getting URL var by its nam 
var byName = $.getUrlVar('name'); 
Questions connexes