Jquery 使用Ajax的Devbridge自动完成功能无法满足建议

Jquery 使用Ajax的Devbridge自动完成功能无法满足建议,jquery,ajax,json,autocomplete,Jquery,Ajax,Json,Autocomplete,我有一个autocomplete字段,它触发服务器对数据库中的fullname进行搜索,并给出JSON响应 当我使用本地数组时,它可以正常工作,但当我使用JSON服务器响应时,建议列表不会更新,即使据我所知,网络控制台中的响应似乎是正确的 我的控制台中没有错误,这不是CSS问题,因为当我检查代码时,建议div是空的 这是我的html输入字段: <input type="text" id="form_fullname" name="form[fullname]" required="requ

我有一个autocomplete字段,它触发服务器对数据库中的fullname进行搜索,并给出JSON响应

当我使用本地数组时,它可以正常工作,但当我使用JSON服务器响应时,建议列表不会更新,即使据我所知,网络控制台中的响应似乎是正确的

我的控制台中没有错误,这不是CSS问题,因为当我检查代码时,建议div是空的

这是我的html输入字段:

<input type="text" id="form_fullname" name="form[fullname]" required="required" class="contact-select form-control" autocomplete="off" data-cip-id="form_fullname">
下面是在JSONLint上验证的JSON响应:

{"query":"vial-","suggestions":["VIAL-COLLET, Bastien"]}

哎哟。。。我在ajaxComplete回调中添加了自动完成方法。。。不知道为什么!
它现在工作得很好。

我使用的是同一个自动完成插件,除了用户键入时建议列表不会更新外,其他一切都正常。整个列表就出现在那里

以下是我的JS代码:

`$('#searchName').autocomplete({
        serviceUrl: "getfoodname.php",
        minChars: 2,
        onSelect: function (suggestion) {
                //alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
                window.open("/detail.php?MonAnID="+suggestion.data,"_self")
                }
            });`
这是我的PHP代码

`include 'dbconnection.php';
    // Check connection
    if ($conn->connect_error) {
         die("Connection failed: " . $conn->connect_error);
    } 

    $keyword = $_GET['query'];

    //Build final SQL statement to search
    $selectsql = "SELECT MonAnID, MonAnName FROM ListMonAn WHERE MonAnName LIKE '%".$keyword."%'";
    //Display data to table
    $result = $conn->query($selectsql);

    $suggestions = array();

    if ($result->num_rows > 0) {
         // output data of each row
        while($row = $result->fetch_assoc()) {  

                $foodname = $row["MonAnName"];
                $foodid = $row["MonAnID"];  

                $suggestions[] = array(
                "value" => $foodname,
                "data" => $foodid
                );
            }       
    }

    echo json_encode(array(
        'query' => $keyword,
        'suggestions' => $suggestions));
    conn.close();`

我有同样的症状,这为我解决了它

这是我以前吃过的

$(document).ajaxComplete(function () {
    $('#SelectedInput').autocomplete({
        serviceUrl: '/AutoComplete/' + $('#SelectedInput').attr('data-autocomplete-action'),
        dataType: 'json'
    });
});
这就是我之后吃的东西

$(document).ajaxComplete(function (event, xhr, options) {
    var modalLoadUrl = '/MyController/GetModalContent';
    if (options.url == modalLoadUrl) {
        $('#SelectedInput').autocomplete({
            serviceUrl: '/AutoComplete/' + $(el).attr('data-autocomplete-action'),
            dataType: 'json'
        });
    }
});
我出错的地方是:每次打开模式时,我都使用和ajax调用动态加载SelectedInput。然后我在一个ajax complete函数中设置autocomplete。然而,每当我使用ajax使用autocomplete搜索查询时,也会触发这种情况,这导致每次键入新内容时搜索都会重置

如何修复:我所需要做的就是将autocomplete方法放入if语句中,检查请求的url是否与加载页面的ajax调用的url匹配。现在,在加载模态时,autocomplete方法只运行一次

$(document).ajaxComplete(function () {
    $('#SelectedInput').autocomplete({
        serviceUrl: '/AutoComplete/' + $('#SelectedInput').attr('data-autocomplete-action'),
        dataType: 'json'
    });
});
$(document).ajaxComplete(function (event, xhr, options) {
    var modalLoadUrl = '/MyController/GetModalContent';
    if (options.url == modalLoadUrl) {
        $('#SelectedInput').autocomplete({
            serviceUrl: '/AutoComplete/' + $(el).attr('data-autocomplete-action'),
            dataType: 'json'
        });
    }
});