Actuellement, je suis à http://example.com/topic.php?id=14
et je souhaite créer un lien vers http://example.com/topic.php?id=14&like=like
en ne définissant pas l'URL actuelle. Comme <a href="&like=like">Like</a>
. Cependant ce dernier me montre http://example.com/&like=like
Il n'y a aucun moyen d'écrire un URI relatif qui préserve la chaîne de requête existante tout en y ajoutant des paramètres.
Vous devez:
topic.php?id=14&like=like
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;
}
Ajoutez ensuite votre valeur avec quelque chose comme:
echo currentUrl().'&value=myVal';
Je sais que je suis en retard pour le jeu, mais vous pouvez simplement utiliser ?id=14&like=like
en utilisant la requête de génération http comme suit:
http_build_query(array_merge($_GET, array("like"=>"like")))
Quels que soient les paramètres GET que vous aviez, ils seront toujours là et si like
était un paramètre avant qu'il ne soit remplacé, sinon, il sera inclus à la fin.
Si vous souhaitez utiliser "like" en tant que paramètre, votre lien doit être:
<a href="/topic.php?like=like">Like</a>
Plus probablement, c'est que vous voulez:
<a href="/topic.php?id=14&like=like">Like</a>
Peut-être que vous pouvez écrire une fonction comme suit:
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);
}
}