2011-12-19 14 views
31

Attualmente sono a http://example.com/topic.php?id=14 e desidero creare un collegamento a http://example.com/topic.php?id=14&like=like non definendo l'URL corrente. Come <a href="&like=like">Like</a>. Tuttavia quest'ultimo mi mostra http://example.com/&like=likeCome aggiungere il parametro url all'URL corrente?

+0

Possibile dupe di http://stackoverflow.com/questions/486896/adding-a-parameter-to-the-url-with-javascript o http://stackoverflow.com/questions/6899097/how-to-to add-a-parameter-url – reflexiv

risposta

8

Non c'è modo di scrivere un URI relativo che conserva la stringa di query esistente aggiungendo parametri aggiuntivi.

Dovete:

topic.php?id=14&like=like 
+2

Ci sono molti modi. Vedi http://stackoverflow.com/questions/6899097/how-to-add-a-parameter-to-the-url su come utilizzare Javascript. – reflexiv

+4

Non è necessario ripetere il percorso. Iniziare con ? va bene. http://stackoverflow.com/q/7871871/62421 – webjunkie

2

Se si desidera utilizzare "come" come parametro il tuo link deve essere:

<a href="/topic.php?like=like">Like</a> 

Più probabile però è che si desidera:

<a href="/topic.php?id=14&like=like">Like</a> 
13
function currentUrl() { 
    $protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https') === FALSE ? 'http' : 'https'; 
    $host  = $_SERVER['HTTP_HOST']; 
    $script = $_SERVER['SCRIPT_NAME']; 
    $params = $_SERVER['QUERY_STRING']; 

    return $protocol . '://' . $host . $script . '?' . $params; 
} 

Quindi aggiungi il tuo valore con qualcosa come

echo currentUrl().'&value=myVal'; 
0

Forse si può scrivere una funzione come segue:

var addParams = function(key, val, url) { 
    var arr = url.split('?'); 
    if(arr.length == 1) { 
    return url + '?' + key + '=' + val; 
    } 
    else if(arr.length == 2) { 
    var params = arr[1].split('&'); 
    var p = {}; 
    var a = []; 
    var strarr = []; 
    $.each(params, function(index, element) { 
     a = element.split('='); 
     p[a[0]] = a[1]; 
     }) 
    p[key] = val; 
    for(var o in p) { 
     strarr.push(o + '=' + p[o]); 
    } 
    var str = strarr.join('&'); 
    return(arr[0] + '?' + str); 
    } 
} 
4

So di essere in ritardo al gioco, ma si può solo fare ?id=14&like=like utilizzando http interrogazione accumulo come segue:

http_build_query(array_merge($_GET, array("like"=>"like"))) 

Qualunque sia il parametro GET che avevate, ci sarà ancora e se like era un parametro prima che venga sovrascritto, altrimenti verrà incluso alla fine.