Javascript encodeURIComponent重定向问题

时间:2012-06-07 08:09:36

标签: php javascript jquery encodeuricomponent

我有一个搜索框可以使用jquery和php,当你在这个搜索框中输入内容时,jquery会准备一个查询并重定向位置。准备查询部分工作正常,但重定向部分有编码查询的问题。页面在重定向之前自动解码编码的查询。

如果在搜索框中输入“test1 test2 test3”,它会使用encodeURIComponent()成功将查询编码为test1%20test2%20test3。

现在页面会将自己重定向到result.php + query。我的问题是页面转到result.php?q = test1 test2 test3而不是result.php?q = test1%20test2%20test3。

这是代码

 if($("#searchbox").val() != "")
 {
    var mq1 = encodeURIComponent($("#searchbox").val());
    var query = "q="+mq1;

 }

 alert(query);
 if(query!="")
 location = "result.php?"+query;

警报结果是q = test1%20test2%20test3但它结果是result.php?q = test1 test2 test3

编辑:如果我使用带有重定向代码的encodeURIComponent函数,它可以正常工作。

 alert(query);
 if(query!="")
 location = "result.php?"+encodeURIComponentquery);

theese代码正在运行,但它也编码q = part。

4 个答案:

答案 0 :(得分:1)

我想也许只是broswer在地址栏中显示test1 test2 test3,但服务器获取了正确的值。您可以通过浏览器开发工具查看firebug等工具,甚至可以在服务器中检查它。

答案 1 :(得分:0)

为什么不将其更改为result.php?q=+encodeURIComponent(query)

答案 2 :(得分:0)

由于你正在使用jQuery,为什么不写这个:

if ($("#searchbox").val()) {
    location = 'result.php?' + $.param({
        q: $("#searchbox").val()
    });
}

答案 3 :(得分:0)

以下是您编写的内容的变体 - 它在输入您的查询后等待输入键被击中(因为我不确定您的代码的上下文,它是否位于提交方法中形式):

$('#searchbox').keypress(function(e) {
   if(e.which == 13 && $(this) {
       $(this).blur();
       var mq1 = encodeURIComponent($(this).val());
       var query = "q="+mq1;
       window.location = "result.php?"+ query;
   }
});

使用它,它会创建以下URL:

result.php?q=multiple%20words%20in%20the%20url%20work%20fine

我认为你的代码几乎就在那里,但围绕IF语句的逻辑导致了问题。