我在一个项目上使用Yii框架,并且正在使用使用select2 jquery的扩展。我无法掌握此扩展或select2的ajax实现方式。
我的ajax调用返回以下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;
}',
),
));
我从这个问题中找到了一个相关的问题!扩展名使用的链接是YII select2 Extension !
所以一个星期后,我与这个问题的答案合并了。
首先,让我强调一下select2 ajax或在我的情况下如何使用Yii ESelect Extension。
jQuery的ajax选项与Eselect Extension相同,即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填充)允许在查询时发送查询参数。就我而言,我没有传递任何其他参数,例如authkey等。就我而言,我将数据类型更改为json并返回了一个带有id和text的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 }
}',
),
),
));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句