php - Yii2 Kartik Select2 Ajax 控制器 - 结果未显示
问题描述
我在我的 yii2 应用程序中设置了一个 select2。我希望 select2 通过 ajax 从控制器操作中获取结果数据。所以我在这里查阅了文档并做了一些调整。不幸的是,即使我返回固定/平面 json 结果,也不会显示任何结果。
看法
Select2::widget([
'name' => 'kv-repo-template',
'pluginOptions' => [
'allowClear' => true,
'minimumInputLength' => 3,
'language' => [
'errorLoading' => new JsExpression("function () { return 'Waiting for results...'; }"),
],
'ajax' => [
'url' => Url::to(['/site/address']),
'dataType' => 'json',
'data' => new JsExpression('function(params) { return {q:params.term}; }'),
],
'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
'templateResult' => new JsExpression('function(city) { console.log(city); return city.text; }'),
'templateSelection' => new JsExpression('function (city) { return city.text; }'),
],
]);
站点控制器.php
public function actionAddress($q = null, $id = null) {
$out['results'] = ['id' => 1, 'text' => 'test'];
Yii::$app->response->format = Response::FORMAT_JSON;
return $out;
}
如果我调试,我看到控制器被调用。但该templateResult
函数仅返回(console.log)默认值“正在搜索...”
那么,我是否配置错误的小部件?或者我在这里想念什么?
在此先感谢,寻求帮助!干杯,卢克
解决方案
一切都很好,但是您正在返回results
key 的 JSON 对象,而不是 Object 请像数组一样返回。
public function actionAddress($q = null, $id = null) {
$out['results'] = [['id' => 1, 'text' => 'test']]; //convert it as arrays
Yii::$app->response->format = Response::FORMAT_JSON;
return $out;
}
推荐阅读
- java - 当 HttpServletRequest getHeader 返回未知?
- php - pg_dump 从一个 Cloud Foundry 实例到另一个
- swift - 如何在 Swift 4 中使用 sizeof() 方法
- haskell - 解析不明确的类型变量
- jquery-bootgrid - 如何应用引导网格过滤器?
- python - django project_form 无效?
- r - 如何将 scale 和 dist 与具有列名的数据集一起使用
- javascript - 如何将相同的元素添加到javascript数组n次
- php - 如何配置 PhpStorm 在调试文件时通过 IIS url 重写而不是直接加载文件
- swift - 保存和加载 UIDocumentBrowserViewController