Yii2 Kartik Select2 Ajax 控制器 - 结果未显示
Yii2 Kartik Select2 Ajax Controller - Result not showing
我在我的 yii2 应用程序中设置了一个 select2。我希望 select2 通过 ajax 从控制器操作中获取结果数据。所以我查阅了文档 here 并做了一些调整。不幸的是,不会显示任何结果,即使我 return 固定/平面 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; }'),
],
]);
SiteController.php
public function actionAddress($q = null, $id = null) {
$out['results'] = ['id' => 1, 'text' => 'test'];
Yii::$app->response->format = Response::FORMAT_JSON;
return $out;
}
如果我调试,我看到调用了控制器。但是templateResult
函数returns(console.log)只有默认值"Searching…"
那么,我是不是配置错了widget?还是我错过了什么?
在此先感谢您的帮助!
干杯,吕克
一切都很好,但你正在 returning JSON results
键的对象,而不是对象 return 作为数组。
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;
}
我在我的 yii2 应用程序中设置了一个 select2。我希望 select2 通过 ajax 从控制器操作中获取结果数据。所以我查阅了文档 here 并做了一些调整。不幸的是,不会显示任何结果,即使我 return 固定/平面 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; }'),
],
]);
SiteController.php
public function actionAddress($q = null, $id = null) {
$out['results'] = ['id' => 1, 'text' => 'test'];
Yii::$app->response->format = Response::FORMAT_JSON;
return $out;
}
如果我调试,我看到调用了控制器。但是templateResult
函数returns(console.log)只有默认值"Searching…"
那么,我是不是配置错了widget?还是我错过了什么?
在此先感谢您的帮助! 干杯,吕克
一切都很好,但你正在 returning JSON results
键的对象,而不是对象 return 作为数组。
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;
}