Более короткий ответ: нет, необходимо закодировать пространство; это корректно для кодирования пространства +
, но только в строке запроса; в пути необходимо использовать %20
.
window.location.href = window.location.href + "? Search =" + escape ($ ("# someId"). val ());
?
Как насчет:
window.location = "/currentpage.aspx?search=" + escape( $("#someId").val());
или
window.location = window.location.pathname + "?search=" + escape( $("#someId").val());
И т. Д ...
Проблема с добавлением чего-либо в window.location.href
в том, что если вы уже это сделали? Просто продолжайте добавлять "? Search = ..."
несколько раз. Что еще более важно, это сложнее, чем должно быть.
Вы уже используете jQuery. Почему бы просто не сделать это?
<form id="search" method="get">
<input type="text" name="search">
</form>
<a href="#" id="go">Search</a>
с помощью:
$(function() {
$("#go").click(function() {
$("#search").submit();
return false;
});
});
и тогда вам не нужно беспокоиться о правильном URL, кодировке и т. Д.
вам нужно добавить фактический базовый URL
window.location.href = window.location.href + "?search=" + escape( $("#someId").val());
Вы изменяете неправильное свойство местоположения, если хотите изменить только строку поиска. Думаю, вы хотите это сделать:
location.search = "?search=" + encodeURIComponent( $("#someId").val());
$(document).ready(function(){
$('a').click(function(e){
window.location = "?search=" + encodeURIComponent($("#someId").val());
//this line of code is intended for older ie and might work,
//because I don't remember it exactly
e.stopPropagation();
return false;
});
});
Какая часть не работает?
Попробуйте encodeURI () вместо escape ().
$("a").click(function() {
document.location.href += "?search=" + encodeURIComponent($("#myTextBox").val());
});