Php 如何解决此错误;未捕获类型错误:b.slice不是函数;在select2插件上会发生这种情况吗?
我有以下jquery函数:Php 如何解决此错误;未捕获类型错误:b.slice不是函数;在select2插件上会发生这种情况吗?,php,jquery,ajax,jquery-select2,Php,Jquery,Ajax,Jquery Select2,我有以下jquery函数: $("#cliente").select2({ placeholder: '--select--', minimumInputLength: 3, ajax: { url: path+'js/php-files/autocomplete.php', dataType: 'json', delay: 250, data: function (params) {
$("#cliente").select2({
placeholder: '--select--',
minimumInputLength: 3,
ajax: {
url: path+'js/php-files/autocomplete.php',
dataType: 'json',
delay: 250,
data: function (params) {
return {
term: params.term // search term
};
},
results: function (data) {
return {
results: data.results
};
}
}
});
在PHP文件(autocomplete.PHP)中,我有:
我使用plugin select2版本4.0.0。
我如何解决这种情况
谢谢 $bo=新客户bo();
$bo = new ClienteBO();
$list = $bo->findAutoComplete($_GET['term']);
$results = array();
$first = true;
$count = count($list);
for ($i = 0; $i < $count; $i++) {
$results['id'] = $list[$i]['codCliente'];
$results['text'] = htmlspecialchars($list[$i]['nomeCliente']);
$ret['results'][$i] = $results;
}
echo json_encode($ret);
$list=$bo->findAutoComplete($\u GET['term']);
$results=array();
$first=true;
$count=计数($list);
对于($i=0;$i<$count;$i++){
$results['id']=$list[$i]['codCliente'];
$results['text']=htmlspecialchars($list[$i]['nomeCliente']);
$ret['results'][$i]=$results;
}
echo json_编码($ret);
我得到了完全相同的错误,我使用的是laravel,我只有在使用ajax请求从控制器获取值时才会得到错误。我意识到,在一个例子中,它是有效的,在另一个例子中,它是导致这个错误。在这里使用集合是我从控制器发送的内容:
作品:
PHP
JSON
不起作用:
PHP
JSON
问题
我意识到是格式问题。由于数字键的唯一功能而改变格式的方式丢失了序列。我怀疑数组键可能是原因,也可能是您吐出的数组格式
可能的解决办法
当我尝试使用values()函数来重置数组键时,它开始工作了
PHP
JSON
^快速提示确保您在chrome控制台上的响应与上一行类似,这意味着每个json对象前面没有数字键,所有“结果”都包含在一个数组中。
附属物:
当数组中有空值时,我也遇到了这个问题。上面的解决方案部分修复了这一问题,因为在第一次显示选项时,当我开始过滤时,它会工作,而不是因为存在空值。祝你好运。同样,我以processResults为例,错误更改为UncaughtTypeError:无法读取未定义书籍的属性“slice”,就像在开发过程中缩小代码一样。变量名被损坏(
a,b
…),所有内容(包括错误)都发生在第1行或第2行。调试不是很方便。错误似乎发生在removepholder
函数中,但不在您提供的代码中。请使用非缩略代码,并发布发生错误的实际变量名称和行。好的,伙计!我删除了占位符命令,错误没有发生。非常感谢。哈,所以当一段代码出现错误时,您只需删除它。这是一个消除bug的有趣方法:)我也面临同样的问题,select2的文档仍然有点糟糕。
<div class="form-group">
<label for="cliente">Cliente:</label>
<select name="cliente" id="cliente" class="form-control">
<option></</option>
</select>
</div>
Uncaught TypeError: b.slice is not a function select2.min.js:2
a.removePlaceholder @ select2.min.js:2
j @ select2.min.js:1
a.append @ select2.min.js:2
j @ select2.min.js:1
(anonymous function) @ select2.min.js:1
d.invoke @ select2.min.js:1
d.trigger @ select2.min.js:1
e.trigger @ select2.min.js:2
(anonymous function) @ select2.min.js:2
(anonymous function) @ select2.min.js:2
(anonymous function) @ jquery.min.js:2
j @ jquery.min.js:2
k.fireWith @ jquery.min.js:2
x @ jquery.min.js:4
b @ jquery.min.js:4
$bo = new ClienteBO();
$list = $bo->findAutoComplete($_GET['term']);
$results = array();
$first = true;
$count = count($list);
for ($i = 0; $i < $count; $i++) {
$results['id'] = $list[$i]['codCliente'];
$results['text'] = htmlspecialchars($list[$i]['nomeCliente']);
$ret['results'][$i] = $results;
}
echo json_encode($ret);
$query = Exchange::where('active', 1)->select(['id', 'name as text'])->get()->toArray();
return json_encode(['results' => $exchanges]);
{"results":[{"id":12,"text":"Binance"}]}
$bases = ExchangePair::where('active', 1)->get()->pluck('base')->unique()->toArray();
json_encode(['results' => $bases]);
{"results":{"0":{"id":12,"text":"BTC"},"4":{"id":120,"text":"456"},"5":{"id":1,"text":"ETH"},"12":{"id":119,"text":"USDT"},"102":{"id":3,"text":"BNB"}}}
$bases = ExchangePair::where('active', 1)->get()->pluck('base')->unique()->values()->toArray();
json_encode(['results' => $bases]);
{"results":[{"id":12,"text":"BTC"},{"id":120,"text":"456"},{"id":1,"text":"ETH"},{"id":119,"text":"USDT"},{"id":3,"text":"BNB"}]}