首页 > 解决方案 > Jquery 自动完成返回表中的所有行,而 PHP 根据查询返回结果

问题描述

奇怪的问题 - Javascript 可以访问比 php 返回的数据更多的数据(或者可能就是这样)。

Javascript:无论我通过查询搜索什么( term ),以下代码都会返回表中的所有记录。

$(document).ready(function() {
        //autocomplete
        $(function() {

            $("#search").autocomplete({
                    source: function(request, response) {
                        $.ajax({
                            url: "fetch_emojis.php",
                            method: 'post',
                            data: { term: request.term },
                            dataType: 'json',
                            success: function(data) {
                                response(data);
                            }
                        });
                    },
                    minLength: 1,
                    open: function(event, ui) {
                        $(".ui-autocomplete").css("z-index", 1000);
                    },
                })
                .autocomplete("instance")._renderItem = function(ul, item) {
                    return $("<li><div><img src='" + item.img + "'><span>" + item.description + "</span></div></li>").appendTo(ul);
                };

        });
    });

PHP:以下代码,如果单独运行,则根据查询返回行(包括示例结果集)

<?php

if ( !isset($_REQUEST['term']) ) {
    exit;
}

$DB_host = "hostname"; 
$DB_login = "userid";
$DB_pass = "password";
$DB_select = "dbname";
$DB_port = "portnumber";

$mysqli = mysqli_connect($DB_host,$DB_login,$DB_pass,$DB_select,$DB_port);

$term = trim(strip_tags($_GET['term'])); 
$term = preg_replace('/\s+/', ' ', $term);

$a_json = array();
$a_json_row = array();

$a_json_invalid = array(array("id" => "#", "value" => $term, "label" => "Only letters and digits are permitted..."));
$json_invalid = json_encode($a_json_invalid);

if(preg_match("/[^\040\pL\pN_-]/u", $term)) {
  print $json_invalid;
  exit;
}


if ($data = mysqli_query($mysqli, "SELECT * FROM emojis WHERE description LIKE '%$term%'")) {
    while($row = mysqli_fetch_array($data)) {
        $id= htmlentities(stripslashes($row['id']));
        $description = htmlentities(stripslashes($row['description']));
        $source = htmlentities(stripslashes($row['source']));
        $a_json_row["id"] = $id;
        $a_json_row["description"] = $description;
        $a_json_row["img"] = $source;
        array_push($a_json, $a_json_row);
    }
}

echo json_encode($a_json);

?>

术语 = 'grin' 的 PHP 结果:

[{"id":"1","description":"笑脸","img":"https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/72/ apple/155/grinning-face_1f600.png"},{"id":"5","description":"大眼睛笑脸","img":"https://emojipedia-us.s3.dualstack. us-west-1.amazonaws.com/thumbs/72/apple/155/smiling-face-with-open-mouth_1f603.png"},{"id":"6","description":"笑脸眼睛","img":"https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/72/apple/155/smiling-face-with-open-mouth-and- smile-eyes_1f604.png"},{"id":"7","description":"汗流浃背的笑脸","img":"https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/72/apple/155/smiling-face-with-open-mouth-and-cold-sweat_1f605.png"},{" id":"8","description":"笑眯眯的脸","img":"https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/72/apple/ 155/smiling-face-with-open-mouth-and-tightly-closed-eyes_1f606.png"},{"id":"102","description":"Grinning Cat Face","img":"https: //emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/72/apple/155/smiling-cat-face-with-open-mouth_1f63a.png"},{"id":" 103","description":"笑眼笑的猫脸","img":"https://emojipedia-us.s3.dualstack.us-west-1.amazonaws。com/thumbs/72/apple/155/grinning-cat-face-with-smiling-eyes_1f638.png"}]

关于我可能做错了什么的任何想法?

标签: javascriptphpjqueryweb-applicationsjquery-ui-autocomplete

解决方案


推荐阅读