通过javascript获取查询,页面重新加载,url重写问题

通过javascript获取查询,页面重新加载,url重写问题,javascript,string,url-rewriting,get,search-engine,Javascript,String,Url Rewriting,Get,Search Engine,我在我的一个项目中使用url重写,我希望能够通过javascript在“键入enter”事件中通过搜索框执行查询,获取此搜索框的值并通过GET请求将其传递到另一个搜索页面。最终的结果将是一个搜索地址a la twitter(即mysite.com/search/mykeyword)。我的代码如下: $("#search-box").keyup(function(event) { var code = (event.keyCode ? event.keyCode : event.w

我在我的一个项目中使用url重写,我希望能够通过javascript在“键入enter”事件中通过搜索框执行查询,获取此搜索框的值并通过GET请求将其传递到另一个搜索页面。最终的结果将是一个搜索地址a la twitter(即mysite.com/search/mykeyword)。我的代码如下:

$("#search-box").keyup(function(event) {    
    var code = (event.keyCode ? event.keyCode : event.which);
    if (code == "13") { // ENTER
        var q = $(this).val();
        document.location.href = "/search/"+q;
    }
});
2个问题:

  • 如何使用JS清理q字符串,以避免使用带有空格或特殊字符的非url编码字符串?(当然,如果我输入这些值中的任何一个都不起作用)。我尝试了函数escape,但仍然不起作用
  • 这样执行GET查询是个好主意吗
  • 谢谢

  • 不要使用逃避。使用

    var q=encodeURIComponent($(this.val())

  • 非常好。。。虽然我不会在搜索的参数上使用URL重写


  • 奇怪的即使它对url()进行了编码,也会抛出404错误。您将使用什么来执行搜索而不是url重写?我的搜索的url重写规则是:RewriteRule^search/([a-z]+)$/search.php?q=$1不带空格/特殊字符/大写,但不带任何空格/大写!我只想说/search/?query=test%20url。不仅没有理由在文本搜索中有一个固定的端点,这只会导致像谷歌这样的爬虫程序的URL错误。您的URL重写规则不够通用。试试这个:重写规则^search/(.*)/app/controllers/page/search/search.php?q=$1