2011-12-19 34 views
31

Hiện tại tôi đang ở số http://example.com/topic.php?id=14 và tôi muốn tạo liên kết tới http://example.com/topic.php?id=14&like=like bằng cách không xác định url hiện tại. Giống như <a href="&like=like">Like</a>. Tuy nhiên điều cuối cùng này cho tôi thấy http://example.com/&like=likeLàm cách nào để thêm thông số url vào url hiện tại?

+0

Có thể có dupe của http://stackoverflow.com/questions/486896/adding-a-parameter-to-the-url-with-javascript hoặc http://stackoverflow.com/questions/6899097/how-to- add-a-parameter-to-the-url – reflexiv

Trả lời

8

Không có cách nào để viết một URI tương đối duy trì chuỗi truy vấn hiện tại trong khi thêm các tham số bổ sung vào chuỗi đó.

Bạn cần phải:

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

Có nhiều cách. Xem http://stackoverflow.com/questions/6899097/how-to-add-a-parameter-to-the-url để biết cách sử dụng Javascript. – reflexiv

+4

Bạn không cần lặp lại đường dẫn. Bắt đầu với ? được rồi. http://stackoverflow.com/q/7871871/62421 – webjunkie

2

Nếu bạn muốn sử dụng "like" như một tham số liên kết của bạn cần phải được:

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

Nhiều khả năng dù là bạn muốn:

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

Sau đó, thêm giá trị của bạn với đôi khi hing như;

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

Có lẽ bạn có thể viết một hàm như sau:

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

Tôi biết tôi đến trễ để các trò chơi, nhưng bạn chỉ có thể thực hiện bằng cách sử dụng ?id=14&like=like http xây dựng truy vấn như sau:

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

Bất kỳ thông số GET nào bạn có sẽ vẫn ở đó và nếu like là thông số trước khi nó bị ghi đè, nếu không thông số sẽ được bao gồm ở cuối.

Các vấn đề liên quan