Ответ 1
Проверьте функцию jQuery.param(), которая должна сделать трюк.
http://api.jquery.com/jQuery.param/
Затем вы можете просто создать функцию, которая добавляет строку, сгенерированную с помощью .param(), к URL-адресу.
У меня есть, например, следующий URL-адрес, хранящийся в глобальной переменной:
var myUrl = "http://mydomain.com/something?row=1";
Тогда функция должна добавить, скажем, еще один параметр, называемый "столбец". Как эта функция добавит параметры в ранее существовавшую строку URL, используя jQuery?
Пример ожидаемой сгенерированной строки:
"http://mydomain.com/something?row=1&column=9"
Проблема заключается в том, что myUrl
также может быть просто:
var myUrl = "http://mydomain.com/something";
(Обратите внимание, что ранее не существовали параметры)
Проверьте функцию jQuery.param(), которая должна сделать трюк.
http://api.jquery.com/jQuery.param/
Затем вы можете просто создать функцию, которая добавляет строку, сгенерированную с помощью .param(), к 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);
Вам не нужен 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
}