首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用php和ajax的Livesearch不工作

使用php和ajax的Livesearch不工作
EN

Stack Overflow用户
提问于 2018-03-07 04:34:10
回答 1查看 444关注 0票数 0

我有一个,它基本上是从一个MySQL数据库中提取制造项目,并显示在一个下拉列表中,当用户输入他们的搜索词时,每一行一个项目,就像在Google中搜索一样。

我需要的是一种允许用户单击特定链接项的方法,并为此在同一页面上显示数据,就在单击的项目(链接)下方。

任何帮助都将不胜感激。

1.HTML表单

代码语言:javascript
复制
<form class="navbar-form navbar-left" action="javascript:">
  <div class="input-group">
    <input type="text" class="form-control" id="searchbox1" name="q" token="<?=$csrf->token()?>" action='search1' placeholder="Search for Templates" autocomplete="off">
      <div class="input-group-btn">
        <button class="btn btn-default "  id="searchbtn1" type="submit">
        <i class="fa fa-search"></i></button>
      </div>
  </div>
  <div id="livesearch1"></div>
</form>

2. AJAX调用分离的.js文件

代码语言:javascript
复制
    $('#searchbox1').on('keyup focus', function(e) {    
        var b = $(this).attr();
        delete b.class, delete b.placeholder, delete b.id, delete b.name, delete b.type, delete b.autocomplete;

        b.q = $(this).val();

        if (b.q != '' && b.q.length > 0) {
            $.ajax({

                type: "POST",
                url: api,                            
                data: b,
                cache: false,
                success: function(a) {

                    $("#livesearch1").html(a);
                    $("#livesearch1").fadeIn();
                }
            });

        } else {
            $("#livesearch1").fadeOut();
        }
    });
    $('#searchbox1').on('blur', function(e) {

        $('#livesearch1').fadeOut();
    });

3.api调用

代码语言:javascript
复制
case 'search':

                 if($app->isAdmin() || $app->isEditor() || $app->isUser())
                {           
                          $app->escape('q');

                          ob_start();

                          ajaxsearch($q);

                          echo $result = ob_get_clean();

                         // json('success','true','results',$result);
                }

            break;

4. .php文件

代码语言:javascript
复制
    function ajaxsearch1($q){ 

         $db = MysqliDb::getInstance();
        $csrf = new Csrf_Protect(); 

        $q = removeWhiteSpace($q);
        $q = htmlspecialchars_decode($q,ENT_QUOTES);
        $q = preg_replace('/[^a-zA-Z0-9.-. .).(]/', '', $q);

        if(strlen($q) >0 )
        {

          $term = $q; 
          $searchterm = explode(' ',$term);

          $searchColumns = array("name","slug");
          $searchCondition = '';

            for($i = 0; $i < count($searchColumns); $i++)
            {
                $searchFieldName = $searchColumns[$i];
                $searchCondition .= "($searchFieldName LIKE '%" . implode("%' AND $searchFieldName LIKE '%", $searchterm) . "%')";
                if($i+1 < count($searchColumns)) $searchCondition .= " OR ";
            }

            $res = $db->rawQuery("SELECT * FROM tbl_templates WHERE ($searchCondition) AND (version='1') order by id desc Limit 10 ");

            foreach($res as $sr)
                {  ?><a href="response/<?=$sr['slug']?>" title="<?=ucfirst($sr['name'])?>"><li><?=ucfirst($sr['name'])?></li></a><?php
                }

            }

    }
    ?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-31 11:00:39

这是一个参数问题。

数据不在$q中,而是在$name代码中,应该是这样的。

代码语言:javascript
复制
case 'search':

     if($app->isAdmin() || $app->isEditor() || $app->isUser())
     {           
         $app->escape('name');
         ob_start();
         ajaxsearch($name);
         echo $result = ob_get_clean();
     }
     break;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49144191

复制
相关文章

相似问题

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