Avatar billede hanibald Mester
06. marts 2016 - 09:44 Der er 6 kommentarer

Fra URL-parameter til js variabel

Jeg har denne URL:
  http://....../abc.php#?vare_id=3
hvori værdien af URL-parameteret vare_id varierer

Som en del af et javaScript har jeg brug for
  var vare_id = xxx;
hvor xxx = url-værdien.

Hvilken mellemliggende jQuery / javascript kode skal anvendes i scriptet for at den aktuelle værdi af URL-parameteret hentes hver gang scriptet køres?

Koden bør i URL-en gå så målrettet som muligt efter at læse parameteret: vare_id=xxx og ignorere mest muligt andet.
Avatar billede claes57 Ekspert
06. marts 2016 - 10:20 #1
jf http://stackoverflow.com/questions/979975/how-to-get-the-value-from-the-url-parameter fx

var get_params = function(search_string) {

  var parse = function(params, pairs) {
    var pair = pairs[0];
    var parts = pair.split('=');
    var key = decodeURIComponent(parts[0]);
    var value = decodeURIComponent(parts.slice(1).join('='));

    // Handle multiple parameters of the same name
    if (typeof params[key] === "undefined") {
      params[key] = value;
    } else {
      params[key] = [].concat(params[key], value);
    }

    return pairs.length == 1 ? params : parse(params, pairs.slice(1))
  }

  // Get rid of leading ?
  return search_string.length == 0 ? {} : parse({}, search_string.substr(1).split('&'));
}

var params = get_params(location.search);

// Finally, to get the param you want
params['vare_id'];
Avatar billede hanibald Mester
06. marts 2016 - 14:07 #2
Dataene skal hentes fra skærmens URL-felt.

URL-feltet får tilført '#?vare_id=3' (eller anden værdi) fra en <A-tag uden at der foretages nogen opdatering af siden (Den oprindelige URL bliver stående foran #?).

Koden skal derfor finde #? og data til højre derfor.
I dataene 'til højre' skal findes og returneres værdien knyttet til navnet vare_id (der bør være angivet som en variabel i scriptet).

Der er kun brug for udtræk fra et enkelt navngivet parameter og ikke en array.

Det fundne vare_id skal efterfølgende bruges i en ajax-rutine uden ændring af den oprindelige URL.

Hvordan hentes URL-værdi fra URL-felt til javaScript variabel??
Avatar billede claes57 Ekspert
06. marts 2016 - 15:24 #3
prøv koden og meld tilbage. Men du kan nok også lave lidt javascript i <A tag, og så helt undgå at læse fra url.
Avatar billede hanibald Mester
06. marts 2016 - 17:11 #4
Har prøvet, men tilsyneladende intet resultat.
Kan iøvrigt ikke lide den store mængde kode til noget, som jeg tror kan være meget mindre og mere overskueligt og målrettet.

Lykken vil - af flere årsager - være, at kunne etablere en js-variabel direkte fra <A-tagget ud fra vareid2.
URL-parameteret  ?vare_id=' .$vareid2 . '  vil da formentligt helt kunne undværes.
Det vil for mig samlet set være en 'guldrandet' løsning.

Mit <A-tag opbygges i øjeblikket i 2 omgange:

1. Det meste opbygges som en php-variabel:

$href3 = 'a class="btn btn-success btn-xs" id="vareid" href="#?vare_id=' .$vareid2 . '"';


2. Variablen indsættes sidst i de enkelte udskriftslinier efter flere andre udskriftsdata:

<". $href3 . "  ><i class='fa fa-tag'></i></a>";



vareid2 etableres således pr udskriftslinie:
$vareid2 = $row3['vare_id'];

Begrundelsen for den lidt komplicerede opbygning er reglerne for brug af anførselstegn i PHP.


Min scriptfil er placeret som et jQuery-event øverst i den aktuelle sides HEAD-del.
Avatar billede claes57 Ekspert
06. marts 2016 - 17:47 #5
hvis du ser på http://stackoverflow.com/questions/1070760/javascript-function-in-href-vs-onclick
og går ned til
best:
Use jQuery or other similar framework to attach onclick handler by element's ID.
$('#myLink').click(function(){ MyFunction(); return false; });

så skal du have 'return true' hvis link skal følges i href, og myfunction() skal bare sætte en defineret værdi til vare_id (definer den først i header/javascript).
Avatar billede hanibald Mester
06. marts 2016 - 18:34 #6
Mit kendskab til js/jq er ikke så stort, at jeg kan gennemskue den situation du opridser.

Har du mulighed for at vise mig det på 'kodeniveau'?


Toppen af mit script ser sådan ud:
<script type="text/javascript">
$(document).ready(function(){
    $("#vareid").click(function(){


Så vidt jeg kan se skal der ikke ske andet med <A-tagget end at jeg kan slette URL-parametrene.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester