猿问

使用JavaScript将参数添加到URL

使用JavaScript将参数添加到URL

在使用AJAX调用的Web应用程序中,我需要提交请求,但在URL的末尾添加一个参数,例如:

原始网址:

HTTP://server/myapp.php ID = 10

结果URL:

http://server/myapp.php?id = 10 &enabled = true

寻找一个解析每个参数的URL的JavaScript函数,然后添加新参数或更新值(如果已存在)。


桃花长相依
浏览 975回答 3
3回答

交互式爱情

您需要适应的基本实现看起来像这样:function&nbsp;insertParam(key,&nbsp;value){ &nbsp;&nbsp;&nbsp;&nbsp;key&nbsp;=&nbsp;encodeURI(key);&nbsp;value&nbsp;=&nbsp;encodeURI(value); &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;kvp&nbsp;=&nbsp;document.location.search.substr(1).split('&'); &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;i=kvp.length;&nbsp;var&nbsp;x;&nbsp;while(i--)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=&nbsp;kvp[i].split('='); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(x[0]==key) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x[1]&nbsp;=&nbsp;value; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kvp[i]&nbsp;=&nbsp;x.join('='); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;if(i<0)&nbsp;{kvp[kvp.length]&nbsp;=&nbsp;[key,value].join('=');} &nbsp;&nbsp;&nbsp;&nbsp;//this&nbsp;will&nbsp;reload&nbsp;the&nbsp;page,&nbsp;it's&nbsp;likely&nbsp;better&nbsp;to&nbsp;store&nbsp;this&nbsp;until&nbsp;finished &nbsp;&nbsp;&nbsp;&nbsp;document.location.search&nbsp;=&nbsp;kvp.join('&');&nbsp;}这大约是正则表达式或基于搜索的解决方案的两倍,但这完全取决于查询字符串的长度和任何匹配的索引为了完成而我使用慢速正则表达式进行基准测试(大约慢了150%)function&nbsp;insertParam2(key,value){ &nbsp;&nbsp;&nbsp;&nbsp;key&nbsp;=&nbsp;encodeURIComponent(key);&nbsp;value&nbsp;=&nbsp;encodeURIComponent(value); &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;s&nbsp;=&nbsp;document.location.search; &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;kvp&nbsp;=&nbsp;key+"="+value; &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;r&nbsp;=&nbsp;new&nbsp;RegExp("(&|\\?)"+key+"=[^\&]*"); &nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;=&nbsp;s.replace(r,"$1"+kvp); &nbsp;&nbsp;&nbsp;&nbsp;if(!RegExp.$1)&nbsp;{s&nbsp;+=&nbsp;(s.length>0&nbsp;?&nbsp;'&'&nbsp;:&nbsp;'?')&nbsp;+&nbsp;kvp;}; &nbsp;&nbsp;&nbsp;&nbsp;//again,&nbsp;do&nbsp;what&nbsp;you&nbsp;will&nbsp;here &nbsp;&nbsp;&nbsp;&nbsp;document.location.search&nbsp;=&nbsp;s;}

喵喵时光机

谢谢大家的贡献。我使用annakata代码并修改为还包括url中根本没有查询字符串的情况。希望这会有所帮助。function&nbsp;insertParam(key,&nbsp;value)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key&nbsp;=&nbsp;escape(key);&nbsp;value&nbsp;=&nbsp;escape(value); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;kvp&nbsp;=&nbsp;document.location.search.substr(1).split('&'); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(kvp&nbsp;==&nbsp;'')&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.location.search&nbsp;=&nbsp;'?'&nbsp;+&nbsp;key&nbsp;+&nbsp;'='&nbsp;+&nbsp;value; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;i&nbsp;=&nbsp;kvp.length;&nbsp;var&nbsp;x;&nbsp;while&nbsp;(i--)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=&nbsp;kvp[i].split('='); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(x[0]&nbsp;==&nbsp;key)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x[1]&nbsp;=&nbsp;value; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kvp[i]&nbsp;=&nbsp;x.join('='); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(i&nbsp;<&nbsp;0)&nbsp;{&nbsp;kvp[kvp.length]&nbsp;=&nbsp;[key,&nbsp;value].join('=');&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//this&nbsp;will&nbsp;reload&nbsp;the&nbsp;page,&nbsp;it's&nbsp;likely&nbsp;better&nbsp;to&nbsp;store&nbsp;this&nbsp;until&nbsp;finished &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.location.search&nbsp;=&nbsp;kvp.join('&'); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答