我正在尝试创建一个ajax搜索页面,该页面显示类似于谷歌的实时结果。
目前我正在努力将搜索查询(例如small dog
)转换为GET
参数,在这种情况下,它将是"searchresults?search=small+dog"
。我想要的是将单词之间的所有空格替换为+
并删除单词前后的空格。
我认为使用正则表达式是可能的,还是有一些javascript或jquery函数来编码?
我尝试使用escape
,encodeURI
,...,但它创建了空格%20
。 PHP会理解它们是多个单词吗?
答案 0 :(得分:1)
要在Javascript中手动转义查询组件,只需使用encodeURIComponent
:
var url = '/searchresults?seach=' + encodeURIComponent(query);
要修改查询字符串,请在字符串上使用.trim()
。
可能也很有用:What every web developer must know about URL encoding
答案 1 :(得分:-1)
而不是将其放在导致各种转义问题的URL中,您应该只发布POST并将数据发送到您的搜索文件,如下所示:
您的AJAX
$.ajax({
url: 'search.php'
,async: true
,cache: false
,type: 'POST' // <-- method of sending to server
,data: {
'search': ' small dog '; // notice white space before and after
}
,dataType: 'json' // server returns info in this format
,success: function(data){
// do something here with return data
console.log(data);
}
});
<强>的search.php 强>
echo trim($_POST['search']); // gives you 'small dog'
答案 2 :(得分:-1)
$.get("searchresults", {search : query}, function(data){
// do something
});
它会自动添加'+',在php端,您只需拨打urldecode($str);