首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery在向远程URL发送请求时忽略前导和尾随空格

jQuery在向远程URL发送请求时忽略前导和尾随空格
EN

Stack Overflow用户
提问于 2017-04-15 10:32:14
回答 3查看 1.4K关注 0票数 0

我目前正在尝试制作一个简单的jQuery自动完成UI,其中搜索词被发送回PHP后端,该后端依次查询MySQL数据库中的匹配项并发回结果。这样做是有效的,如果我输入3-4空格,它也会发送一个请求,这会返回后端的所有结果。我如何配置jQuery自动完成,以便无论输入了什么术语,应该进入后端的搜索词都应该被裁剪其前导和尾随空格,并且在裁剪后,如果发现它是一个空字符串,则根本不发送请求?

我在其中找到了多个示例,但它们都涉及一个内置的术语数组,例如,如果source参数的值是remote,我就无法知道如何配置它:

代码语言:javascript
复制
$("#myinput").autocomplete({
        source: "http://127.0.0.1:8000/autoComplete/",
        appendTo: "#search-holder",
        response: function(e,y) {}
});
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-15 16:42:16

这个问题没有简单的答案。我以为search事件允许一个术语覆盖,可惜它没有。Nagaraju的回答是正确的,只是他没有显示实际的实现。它应该是这样的

代码语言:javascript
复制
$( "#myinput" ).autocomplete({
    source : function(request, response){
      //trim the input value
      request.term = request.term.trim();
      if(request.term == ""){
          //when empty, returns empty result
          response([]);
      }else{
          //our own implementation of request to the server
          $.get("http://127.0.0.1:8000/autoComplete/?term=" + request.term, 
            function(data) {
                response(data);
            });
      }
   }
}); 
票数 2
EN

Stack Overflow用户

发布于 2017-04-15 10:51:29

按以下方式更新您的source函数:

代码语言:javascript
复制
    source: function( request, response ) {
       //Remove spaces 
      var matcher = new RegExp($.trim(request.term).replace(/ +/g, ""), "i" );
      response($.grep(resources, function(value) {
         return matcher.test( value);
      }));   
    }
票数 1
EN

Stack Overflow用户

发布于 2017-04-15 10:37:39

使用trim()从字符串的结尾和开头删除空格?https://api.jquery.com/jQuery.trim/

或者你可以在后台做。http://php.net/manual/en/function.trim.php

编辑:为什么不在加载页面并将其存储在数组中时,只使用AJAX调用一次即可获得所有可用的自动完成。这样,当页面加载时,DB只会被打扰一次,而不是每次输入字段发生更改时。此外,这将占用DB的一些工作负载,空白也不是问题。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43424953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档