将输入字符串转换为GET变量

时间:2013-08-15 13:01:30

标签: php javascript jquery regex

我正在尝试创建一个ajax搜索页面,该页面显示类似于谷歌的实时结果。

目前我正在努力将搜索查询(例如small dog)转换为GET参数,在这种情况下,它将是"searchresults?search=small+dog"。我想要的是将单词之间的所有空格替换为+并删除单词前后的空格。

我认为使用正则表达式是可能的,还是有一些javascript或jquery函数来编码?

我尝试使用escapeencodeURI,...,但它创建了空格%20。 PHP会理解它们是多个单词吗?

3 个答案:

答案 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);