Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery构造带参数的URL_Javascript_Jquery - Fatal编程技术网

Javascript 使用jQuery构造带参数的URL

Javascript 使用jQuery构造带参数的URL,javascript,jquery,Javascript,Jquery,例如,我将以下URL存储在全局变量中: var myUrl = "http://mydomain.com/something?row=1"; 然后函数必须添加另一个名为“column”的参数。该函数如何使用jQuery向预先存在的URL字符串添加参数 预期生成的字符串示例: "http://mydomain.com/something?row=1&column=9" 问题是myUrl也可能只是: var myUrl = "http://mydomain.com/something";

例如,我将以下URL存储在全局变量中:

var myUrl = "http://mydomain.com/something?row=1";
然后函数必须添加另一个名为“column”的参数。该函数如何使用jQuery向预先存在的URL字符串添加参数

预期生成的字符串示例:

"http://mydomain.com/something?row=1&column=9"
问题是
myUrl
也可能只是:

var myUrl = "http://mydomain.com/something";

(请注意,没有预先存在的参数)

检查jQuery函数.param(),它应该可以完成这个任务


然后,您可以创建一个函数,将.param()生成的字符串附加到url。

您不需要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 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');
你可以试试这个

myUrl += ((myUrl.indexOf('?') == -1) ? '?' : '&');
myUrl += "column=9";

将所有内容都保存在对象中,直到实际需要字符串为止

首先从一些初始值填充对象:

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“


您需要它做什么?有一个组件需要该URL,并且有自己的方法使用AJAX获取数据。这个问题是关于构造查询字符串,而不是读取它。我认为您没有阅读这个问题。它是关于检测查询字符串参数的。如果字符串已经有参数,会发生什么?或者字符串已经有同名的参数了?在这种情况下,最好的办法可能是先解析URL,然后用jQuery.param或类似的方法重新构建它。“字符串是一个严格的数据结构…”这没有考虑到参数可能已经存在。当您以示例中的方式调用它时,这一点很明显,但当所有参数都来自其他变量时,将参数添加到URL时,这一点就不明显了。这缺少URL编码。使用正则表达式
([?&]“+name+”=)([^&]+)?
会更好。这允许在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);