无法按照自动完成演示中的说明在<ul>标记中填充数据

时间:2019-04-17 10:27:24

标签: javascript php autocomplete

我正在使用用于PHP代码和JavaScript的Flight PHP框架来实现Autocomplete。我从此链接https://github.com/TarekRaafat/autoComplete.js引用了此Autocomplete代码。拨打电话时,我在控制台的“网络”选项卡中收到json响应。但是我无法从屏幕截图中看到后端的填充数据。Autocomplete data populated in demo

JavaScript代码

    // The autoComplete.js Engine instance creator
const autoCompletejs = new autoComplete({
    data: {
        src: async () => {
        // Loading placeholder text
        document.querySelector("#autoComplete").setAttribute("placeholder", "Loading...");
        //let keyword = document.querySelector("#autoComplete").nodeValue;
        //alert(keyword);
        if(keyword != '' && keyword != undefined) {
            // Fetch External Data Source
            const source = await fetch("https://nn.example.com/search_practitioners/"+keyword);

            const data = await source.json();
            // Returns Fetched data
            return data;
        } else {
            return null;
        }
        },
        key: ["first_name", "last_name", "area"]
    },
    sort: (a, b) => {
        if (a.match < b.match) return -1;
        if (a.match > b.match) return 1;
        return 0;
    },
    placeHolder: "First Name",
    selector: "#autoComplete",
    threshold: 0,
    //searchEngine: "strict",
    highlight: true,
    maxResults: 10,
    resultsList: {
        container: source => {
        resultsListID = "autoComplete_results_list";
        return resultsListID;
        },
        destination: document.querySelector("#autoComplete"),
        position: "afterend"
    },
    resultItem: (data, source) => {
        return `${data.match}`;
    },
    onSelection: feedback => {
        const selection = feedback.selection.value.first_name;
        console.log("feedback.selection.value.first_name " +selection);
        // Render selected choice to selection div
        document.querySelector(".selection").innerHTML = selection;
        // Clear Input
        document.querySelector("#autoComplete").value = "";
        // Change placeholder with the selected value
        document.querySelector("#autoComplete").setAttribute("placeholder", selection);
        // Concole log autoComplete data feedback
        console.log(feedback);
    }
});

PHP代码

    function search_practitioners($keyword) {
        $mysqli = Flight::get('mysqli');

        $userInput = $keyword;

        // Runs Query On Database
        $query = 'SELECT prof_login_details.first_name,prof_login_details.last_name,prof_user_details.area FROM prof_user_details  INNER JOIN prof_login_details ON prof_user_details.prof_login_id = prof_login_details.id WHERE prof_login_details.first_name LIKE "%'.$userInput.'%" OR prof_login_details.last_name LIKE "%'.$userInput.'%" ';

        // Runs Query And Places It
        $result = $mysqli->query($query);

        // Kills Script If No Results
        if (!$result) {
            echo "Problem with query " . $query . "<br/>";
            echo mysqli_error($mysqli);

            return json_encode(array());

        }

        $first_name = mysqli_fetch_all_alt($result);

        echo json_encode($first_name);
    }

HTML代码

<div class="container">

   <div class="body" align="center">
      <input id="autoComplete" type="text" tabindex="1" name="keyword">
      <div class="mode">
          <h4>mode</h4>
          <div class="toggele">
              <div class="toggeler">Strict</div>
          </div>
      </div>
      <div class="selection"></div>
   </div>
 </div>

0 个答案:

没有答案