繁体   English   中英

使用Ajax预先引导

[英]bootstrap typeahead with ajax

我无法提前在我的网站上工作,这是我尝试过的。

我的html和代码

    <html>
<head>
    <title>typeahead</title>

     <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet">
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
     <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.10.4/typeahead.bundle.min.js"></script>
</head>
<body>


<input id="typeahead" type="text" data-provide="typeahead" autocomplete="off">



<script type="text/javascript">
$(document).ready(function() {
$('#typeahead').typeahead({
  source: function (query, process) {
    $.ajax({
      url: 'data.php',
      type: 'get',
      dataType: 'JSON',
      async: true,
      data: 'query=' + query,
      success: function(data) {
        console.log(data);
        process(data);
      }
    });
  }
});
});
</script>

</body>
</html>

当我在浏览器中查询data.php时,得到以下信息

http://localhost/data.php?query=a

输出

["admin","admin2"]

但是,我不确定为什么后端不起作用,我已经检查了我的代码很多次,我想知道我丢失了什么。

非常感谢您的帮助。

$.ajax({
  url: 'data.php', // Just try url:'data.php?query=a'
  type: 'get',
  dataType: 'JSON',
  async: true,
  data: {'query' : query}, // changed
  success: function(data) {
     console.log(data);
     process(data);
   }
});

您可以使用Bootstrap 2.1.0至2.3.2编写这样的ajax调用:

$(document).ready(function(){
  $('#typeahead').typeahead({
            source: function (typeahead, query) {
                return $.get('data.php', { 'query': a }, function (data) {
                    return typeahead.process(data);
                });
            }
        });

});

与Bootstrap 3.0类型不再捆绑在一起,因此您可以提前使用Ajax

它非常易于使用:

$("#ajax-typeahead").typeahead({
     ajax: "/path/to/source"
});

通常,typeahead也会使用handlebar.js,因此我将其包含在此处。 我更新了您的代码以匹配此处的远程示例(尽管我并未实际测试代码)。 希望这能使您指出正确的方向。

<html>
<head>
        <title>typeahead</title>

         <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet">
         <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
         <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
         <script src="https://cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.10.4/typeahead.bundle.min.js"></script>
         <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.min.js"></script>
</head>
<body>

<input id="typeahead" type="text" data-provide="typeahead" autocomplete="off">


<script type="text/javascript">
    $(document).ready(function() {
        var mySearch = new Bloodhound({
            datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
            queryTokenizer: Bloodhound.tokenizers.whitespace,
            prefetch: 'data.php',
            remote: 'data.php?query=' + query
        });

        mySearch.initialize();

        $('#typeahead').typeahead(null, {
            name: 'best-pictures',
            displayKey: 'value',
            source: mySearch.ttAdapter()
        });
    });
</script>

</body>
</html>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM