2011-12-19 34 views
31

Actualmente estoy en http://example.com/topic.php?id=14 y quiero hacer un enlace a http://example.com/topic.php?id=14&like=like al no definir la URL actual. Me gusta <a href="&like=like">Like</a>. Sin embargo, este último me muestra http://example.com/&like=like¿Cómo agregar el parámetro url a la URL actual?

+0

Posible engaño de http://stackoverflow.com/questions/486896/adding-a-parameter-to-the-url-with-javascript or http://stackoverflow.com/questions/6899097/how-to- add-a-parameter-to-the-url – reflexiv

Respuesta

8

No hay forma de escribir un URI relativo que preserve la cadena de consulta existente mientras se le agregan parámetros adicionales.

Tienes que:

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

Hay muchas maneras. Consulte http://stackoverflow.com/questions/6899097/how-to-add-a-parameter-to-the-url para saber cómo usar Javascript. – reflexiv

+4

No necesita repetir la ruta. Empezando con ? está bien. http://stackoverflow.com/q/7871871/62421 – webjunkie

2

Si desea utilizar "como" como un parámetro de su enlace tiene que ser:

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

Lo más probable es que aunque desea:

<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; 
} 

A continuación, agregue su valor con somet hing como;

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

Tal vez usted puede escribir una función de la siguiente manera:

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

sé que estoy tarde para el juego, pero que sólo puede hacer mediante el uso de ?id=14&like=like http consulta acumulación de la siguiente manera:

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

Cualquier parámetro GET que tengas seguirá allí y si like fue un parámetro antes de que se sobrescriba, de lo contrario se incluirá al final.