Подтвердить что ты не робот

Перенаправлять пользователя на текущую страницу с помощью некоторого запроса с помощью javascript

Когда человек нажимает на ссылку, я хочу сделать это:

  • захватить текст из текстового поля
  • закодировать текст
  • перенаправить на текущую страницу .aspx? search = textboxvalue

У меня есть это до сих пор, но он не работает:

window.location.href = "?search=" + escape( $("#someId").val());
4b9b3361

Ответ 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() )});

Ответ 2

window.location.href = window.location.href + "?search=" + escape( $("#someId").val());?

Ответ 3

Как насчет:

window.location = "/currentpage.aspx?search=" + escape( $("#someId").val());

или

window.location = window.location.pathname + "?search=" + escape( $("#someId").val());

Etc...

Ответ 4

вам нужно добавить фактический базовый url

window.location.href = window.location.href + "?search=" + escape( $("#someId").val());

Ответ 5

 $(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;
     });                                                                   

});

Ответ 6

Проблема с добавлением чего-то к 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-адресе, кодировке и т.д.

Ответ 7

Вы меняете неправильное свойство местоположения, если хотите изменить строку поиска. Я думаю, вы хотите сделать это:

location.search = "?search=" + encodeURIComponent( $("#someId").val());

Ответ 8

Какая часть не работает?

Попробуйте encodeURI(), а не escape().

Ответ 9

$("a").click(function() {

 document.location.href += "?search=" + encodeURIComponent($("#myTextBox").val());


});

Ответ 10

    function Redirect()
      {
    window.location.href = "URL_TO_BE_Redircted";
      }

тогда в кнопке In (asp.net)

    <asp:Button runat="server" id="btnRedirect" onClientClick="Redirect();return false;"/>

Итак, после нажатия на кнопку управление будет идти по серверу, а там  вы можете получить доступ к форме Querystring, которую вы формируете!