Ответ 1
Мне нужно было сделать что-то похожее на то, что вы хотели, поэтому я собрал функцию, которая позволяет вам это делать. Надеюсь, это окажется полезным. Я проверил его довольно подробно и не нашел никаких проблем, пожалуйста, не стесняйтесь, дайте мне знать, если будут найдены какие-либо проблемы.
Функция
function reloadWithQueryStringVars (queryStringVars) {
var existingQueryVars = location.search ? location.search.substring(1).split("&") : [],
currentUrl = location.search ? location.href.replace(location.search,"") : location.href,
newQueryVars = {},
newUrl = currentUrl + "?";
if(existingQueryVars.length > 0) {
for (var i = 0; i < existingQueryVars.length; i++) {
var pair = existingQueryVars[i].split("=");
newQueryVars[pair[0]] = pair[1];
}
}
if(queryStringVars) {
for (var queryStringVar in queryStringVars) {
newQueryVars[queryStringVar] = queryStringVars[queryStringVar];
}
}
if(newQueryVars) {
for (var newQueryVar in newQueryVars) {
newUrl += newQueryVar + "=" + newQueryVars[newQueryVar] + "&";
}
newUrl = newUrl.substring(0, newUrl.length-1);
window.location.href = newUrl;
} else {
window.location.href = location.href;
}
}
Как использовать его
Функция принимает литерал объекта как единственный аргумент. Литерал объекта должен содержать переменную строки запроса, с которой вы хотите перезагрузить страницу. Он учитывает существующие переменные и переопределяет существующий, если вы укажете его в литеральном объекте, который вы передаете.
Итак, скажем, наше местоположение http://localhost/helloworld.php
, и я хочу перенаправить на текущую страницу с переменной строки запроса foo
, значение которой должно быть bar
, я бы назвал функцию следующим образом:
reloadWithQueryStringVars({"foo": "bar"});
Браузер перейдет к http://localhost/helloworld.php?foo=bar
. И если я передаю функцию, то:
reloadWithQueryStringVars({"foo": "bar2"});
Браузер перейдет к http://localhost/helloworld.php?foo=bar2
.
Когда функция принимает литерал объекта, вы можете передать несколько свойств функции для нескольких строк строки запроса. Если я все еще на http://localhost/helloworld.php?foo=bar2
, и я вызываю функцию следующим образом
reloadWithQueryStringVars({"foo": "bar3", "answer": "42", "bacon": "tasty"});
Браузер перейдет к http://localhost/helloworld.php?foo=bar3&answer=42&bacon=tasty
Ваш пример использования
В ответ на вопрос, однако, вы вызываете функцию следующим образом:
reloadWithQueryStringVars({"search": escape( $("#someId").val() )});