2011-05-18 12 views
0

我在我的项目之一使用网址重写,我希望能够执行通过搜索框使用JavaScript,在“类型输入”事件,获取此搜索框的值,并将其通过GET请求传递给另一个搜索页面。最终的结果将是一个搜索地址la twitter(即mysite.com/search/mykeyword)。我的代码如下:通过与页面刷新,url重写问题的GET GET查询

$("#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个问题:

  1. 我怎么能消毒将q字符串JS以避免使用空格或特殊字符的URL非编码字符串? (当然,如果我键入这些值中的任何一个,它都不起作用)。我尝试了函数转义,但它仍然不起作用。
  2. 以这种方式执行GET查询是一个好主意吗?

感谢

回答

2
  1. 不要使用逃逸。使用encodeURIComponent

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

  2. 完全正常的......虽然我不会用URL重写的参数来搜索。

+0

奇怪...即使它编码url(http:// localhost:8888/search/test%20url),它也会引发404错误。 – gwendall 2011-05-18 02:51:56

+0

你会用什么来执行搜索而不是URL重写? – marcosfromero 2011-05-18 02:52:33

+0

我的搜索的网址重写规则是:RewriteRule^search /([az] +)$ \t \t \t \t /search.php?q=$1 – gwendall 2011-05-18 02:52:36