使用jQuery构造带有参数的URL
Constructing a URL with parameters using jQuery
例如,我在全局变量中存储了以下URL:
var myUrl = "http://mydomain.com/something?row=1";
然后,一个函数必须添加另一个名为"列"的参数。该函数如何使用jQuery将参数添加到预先存在的URL字符串中?
预期生成的字符串示例:
"http://mydomain.com/something?row=1&column=9"
问题是myUrl
也可能只是:
var myUrl = "http://mydomain.com/something";
(请注意,没有预先存在的参数)
看看jQuery函数.param(),它应该能完成任务。
http://api.jquery.com/jQuery.param/
然后,您可以创建一个函数,将.praram()生成的字符串附加到url中。
var myUrl = "http://mydomain.com/something";
function addQSParm(name, value) {
var re = new RegExp("([?&]" + name + "=)[^&]+", "");
function add(sep) {
myUrl += sep + name + "=" + encodeURIComponent(value);
}
function change() {
myUrl = myUrl.replace(re, "$1" + encodeURIComponent(value));
}
if (myUrl.indexOf("?") === -1) {
add("?");
} else {
if (re.test(myUrl)) {
change();
} else {
add("&");
}
}
}
console.log(myUrl);
addQSParm("foo", "asdf");
console.log(myUrl);
addQSParm("bar", "qwerty");
console.log(myUrl);
addQSParm("foo", "123");
console.log(myUrl);
jsFiddle
您不需要jQuery,可以使用这样的函数:
var buildUrl = function(base, key, value) {
var sep = (base.indexOf('?') > -1) ? '&' : '?';
return base + sep + key + '=' + value;
}
你会这样使用它:
buildUrl('http://www.example.com/foo', 'test', '123');
buildUrl('http://www.example.com/foo?bar=baz', 'test', '123');
将所有内容都保存在一个对象中,直到您真正需要一个字符串为止。
首先从一些初始值填充对象:
var $_GET = location.search.substr(1).split("&").reduce( function( obj, val ){
if( !val ) return obj;
var pair = val.split("=");
obj[pair[0]] = pair[1];
return obj;
}, {} );
考虑初始url:"http://mydomain.com/something?row=1&column=9"
$_GET['column'] = 5;
$.param( $_GET ); //"row=1&column=5"
数组#减少
你可以试试这个。
myUrl += ((myUrl.indexOf('?') == -1) ? '?' : '&');
myUrl += "column=9";
if (myUrl.indexOf("?") != -1){
// contains query string
}
else
{
// doesn't
}
相关文章:
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 传递包含'%的参数'在URL中
- 如何在router.get()方法中传递url作为参数
- javascript中url中的Regex参数
- 如何在reactrouterv2.+中从URL获取参数
- 使用express.具有多个url和可选参数的Router()
- 如何在所有ajax调用中向URL添加参数
- 通过Javascript将HTML中的电话号码与URL参数进行交换
- 如何使用Javascript从URL参数中自动填充文本字段
- XMLHttpRequest.open()AJAX中的参数url
- 如何将Google Analytics配置为将URL参数作为单个页面进行跟踪
- 使用应用程序状态js和视图在angular js url上传递两个参数
- 在url参数javascript中存储键值对列表
- backbone.js-映射标准url参数-使用多个参数
- 模版启动错误-类型错误(“参数”url'必须是字符串,而不是“+类型的url”)
- UI 路由器参数 URL 不起作用,只是重定向到 /
- 在Select2中传递参数url
- 使用jQuery/Javascript(querystring)获取查询字符串参数url值
- Javascript -重定向参数URL只有一次
- 替换url参数-url被破坏