使用 YII 框架选择 2 ajax 选项
Select2 ajax option using YII Framework
我在一个项目中使用 Yii 框架,并且我正在使用一个使用 select2 jquery 的扩展。我无法理解 ajax 的实现如何与此扩展或 select2 一起工作。
我的 ajax 呼叫 returns 以下 json.
[
{"id":"1", "text" : "Option one"},
{"id":"1", "text" : "Option one"},
{"id":"1", "text" : "Option one"}
]
yii 扩展如下包含 select2 扩展
$this->widget('ext.select2.ESelect2', array(
'name' => 'selectInput',
'ajax' => array(
'url'=>Yii::app()->createUrl('controller/ajaxAction'),
'dataType' => 'json',
'type' => 'GET',
'results' => 'js:function(data,page) {
var more = (page * 10) < data.total; return {results: data, more:more };
}',
'formatResult' => 'js:function(data){
return data.name;
}',
'formatSelection' => 'js: function(data) {
return data.name;
}',
),
));
我从这个 Question! The link to the extension am using is YII select2 Extention!
中找到了一个相关问题
所以一周后我合并了这个问题的答案。
首先让我强调一下 select2 ajax 或者在我的例子中是 Yii ESelect 扩展。
jquery的ajax选项与Eselect Extention相同,即url、type和datatype,但查询成功后返回的格式略有不同。
至于Eselect/select2的结果集希望返回两个参数。那就是
id : data.myOptionsValue;
text : data.myOptionText;
参考::https://select2.github.io/options.html#ajax
如果我们想要自定义返回的结果集的格式,我们可以使用
来扩展插件
'formatResult' => 'js:function(data){
return data.name;
}',
'formatSelection' => 'js: function(data) {
return data.name;
}',
我也无法理解扩展是如何查询的。环顾四周,我意识到我们有两种数据类型 jsonp 和 json 这两种数据类型将以不同的方式处理数据。
Jsonp(json padding) 允许在查询时发送查询参数。至于我的情况,我没有传递任何其他参数,例如 authkey e.t.c。在我的例子中,我将数据类型更改为 json 并返回一个带有 id 和文本的 json 作为结果。请参阅下面我的工作片段。
echo CHtml::textField('myElementName', '', array('class' => 'form-control col-lg-12'));
$this->widget('ext.select2.ESelect2', array(
'selector' => '#myElementName',
'options' => array(
'placeholder' => 'Search ..',
'ajax' => array(
'url' => Yii::app()->createUrl('controller/ajaxAction'),
'dataType' => 'json',
'delay' => 250,
'data' => 'js: function(term) {
return {
q: term,
};
}',
'results' => 'js: function(data){
return {results: data }
}',
),
),
));
我在一个项目中使用 Yii 框架,并且我正在使用一个使用 select2 jquery 的扩展。我无法理解 ajax 的实现如何与此扩展或 select2 一起工作。
我的 ajax 呼叫 returns 以下 json.
[
{"id":"1", "text" : "Option one"},
{"id":"1", "text" : "Option one"},
{"id":"1", "text" : "Option one"}
]
yii 扩展如下包含 select2 扩展
$this->widget('ext.select2.ESelect2', array(
'name' => 'selectInput',
'ajax' => array(
'url'=>Yii::app()->createUrl('controller/ajaxAction'),
'dataType' => 'json',
'type' => 'GET',
'results' => 'js:function(data,page) {
var more = (page * 10) < data.total; return {results: data, more:more };
}',
'formatResult' => 'js:function(data){
return data.name;
}',
'formatSelection' => 'js: function(data) {
return data.name;
}',
),
));
我从这个 Question! The link to the extension am using is YII select2 Extention!
中找到了一个相关问题所以一周后我合并了这个问题的答案。
首先让我强调一下 select2 ajax 或者在我的例子中是 Yii ESelect 扩展。
jquery的ajax选项与Eselect Extention相同,即url、type和datatype,但查询成功后返回的格式略有不同。
至于Eselect/select2的结果集希望返回两个参数。那就是
id : data.myOptionsValue;
text : data.myOptionText;
参考::https://select2.github.io/options.html#ajax
如果我们想要自定义返回的结果集的格式,我们可以使用
来扩展插件 'formatResult' => 'js:function(data){
return data.name;
}',
'formatSelection' => 'js: function(data) {
return data.name;
}',
我也无法理解扩展是如何查询的。环顾四周,我意识到我们有两种数据类型 jsonp 和 json 这两种数据类型将以不同的方式处理数据。
Jsonp(json padding) 允许在查询时发送查询参数。至于我的情况,我没有传递任何其他参数,例如 authkey e.t.c。在我的例子中,我将数据类型更改为 json 并返回一个带有 id 和文本的 json 作为结果。请参阅下面我的工作片段。
echo CHtml::textField('myElementName', '', array('class' => 'form-control col-lg-12'));
$this->widget('ext.select2.ESelect2', array(
'selector' => '#myElementName',
'options' => array(
'placeholder' => 'Search ..',
'ajax' => array(
'url' => Yii::app()->createUrl('controller/ajaxAction'),
'dataType' => 'json',
'delay' => 250,
'data' => 'js: function(term) {
return {
q: term,
};
}',
'results' => 'js: function(data){
return {results: data }
}',
),
),
));