gpt4 book ai didi

php - Kendo 自动完成功能不起作用

转载 作者:行者123 更新时间:2023-11-29 08:03:14 24 4
gpt4 key购买 nike

我的 Kendo 自动完成有问题。我试图搜索任何单词,但它不起作用。

我尝试通过 Google Chrome 的控制台进行查看,但显示的唯一错误是:

“未捕获类型错误:无法读取未定义的属性‘切片’”

这是我的代码:

HTML

<HEAD>  <script src="librerias/jquery.min.js"></script>
<script src="librerias/kendo.all.min.js"></script>
</HEAD>

<BODY> <input id="#autocomplete" /> </BODY>
<script>
'use strict';

(function($, kendo) {

// select the input and create an AutoComplete
$("#autocomplete").kendoAutoComplete({
dataSource: new kendo.data.DataSource({
transport: {
read: "functions/autocomplet.php"
},
schema: {
data: "data"
}
}),
dataTextField: "nombre",
placeholder: "Please Select A State"
});

})(jQuery, kendo);
</script>

PHP

<?PHPinclude ("conexion.php");  
$arr = array();
$q=$_GET["StartsWith"];
if (!$q) return;

$sql="select nombre from clientes where nombre like '%q%'";

$stmt = mysql_query($sql,$conexion);
while($row = mysql_fetch_array($stmt)) {
$arr[] = $row['nombre'];
}

// add the header line to specify that the content type is JSON
header("Content-type: application/json");

echo "{\"data\":" .json_encode($arr). "}";?>

最佳答案

最初创建 AutoComplete 时,它​​会调用 transport.read 但没有 StartsWith 参数,因此它会退出而不返回任何内容。

您应该返回一个空数组:

if (!$q) {
echo "{\"data\":" .json_encode($arr). "}";
return;
}

或定义自动完成功能,在使用 minLenght 输入最少字符数之前不发送请求:

$("#autocomplete").kendoAutoComplete({
dataSource : new kendo.data.DataSource({
transport: {
read: "autocomplet.php"
},
schema : {
data: "data"
}
}),
minLength : 1,
dataTextField: "nombre",
placeholder : "Please Select A State"
});

默认情况下,自动完成使用 serverFiltering这意味着它期望您返回 PHP 代码中的所有内容,然后客户端对其进行过滤。所以你应该这样做:

$("#autocomplete").kendoAutoComplete({
dataSource : new kendo.data.DataSource({
serverFiltering: true,
transport : {
read: "autocomplet.php"
},
schema : {
data: "data"
}
}),
minLength : 1,
dataTextField: "nombre",
placeholder : "Please Select A State"
});

接下来,输入的字符串作为 StartsWith 参数发送,而是作为稍微复杂一点的字符串发送,例如 filter: {logic: "and",filters : [ { 字段: "nombre", 操作符: "startswith", 值: "typed"} ] }。如果不想解析可以使用parameterMap然后您的自动完成定义将类似于:

$("#autocomplete").kendoAutoComplete({
dataSource : new kendo.data.DataSource({
serverFiltering: true,
transport : {
read : "autocomplet.php",
parameterMap: function (op) {
return { StartsWith: op.filter.filters[0].value };
}
},
schema : {
data: "data"
}
}),
minLength : 1,
dataTextField: "nombre",
placeholder : "Please Select A State"
});

关于php - Kendo 自动完成功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23251492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com