我有一个搜索框可以使用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。
答案 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语句的逻辑导致了问题。