如何从MySQL数据库中获取数据并在javascript自动完成中使用?

时间:2018-05-13 23:17:39

标签: javascript php jquery autocomplete

我正在使用jQuery autocomplete构建自动填充功能。为了实现这一点,我在表中存储了216个行业的数据记录。我想获取该表并在javascript数组中使用自动完成。你可以看到我到目前为止所尝试的但是我得到了null。我的问题是如何从数据库中获取数据并使其成为我可以在javascript数组中用于自动完成的数组?

表格

id | industryName
1  | Air Transport
2  | Agriculture
...

autocomplete.php

<div class="ui-widget">
  <label for="industries">Industries: </label>
  <input id="industries">
</div>

<script>
        $.ajax({
           url : 'industries.php',
           type : 'GET',
           success : function(data){
              var availableIndustries = jQuery.parseJSON(data);

        $( function() {
        $( "#industries" ).autocomplete({
          source: availableIndustries
        });
      } );
           }
        });
</script>

industries.php

include 'includes/database.php';

 $sql = "SELECT * FROM industries";
 $result= $conn->query($sql);
 echo json_encode($result);

2 个答案:

答案 0 :(得分:0)

你的命名是对的吗?示例有误......

另外,在exit;

之后添加echo json_encode($result);

enter image description here

答案 1 :(得分:0)

我找到了一个适合我的解决方案。

<强> autocomplete.php

$(document).on('click', '#remove', function(){ 
    $(this).parents('article').remove();
});

<强> industries.php

<div class="ui-widget">
  <label for="industries">Industries: </label>
  <input id="industries">
</div>

<script>
var validOptions = <?=$json_array?>;
previousValue = "";

$('#industries').autocomplete({
    autoFocus: true,
    source: validOptions
}).keyup(function() {
    var isValid = false;
    for (i in validOptions) {
        if (validOptions[i].toLowerCase().match(this.value.toLowerCase())) {
            isValid = true;
        }
    }
    if (!isValid) {
        this.value = previousValue
    } else {
        previousValue = this.value;
    }
});
</script>