使用dataUrl选项返回给select元素的json数据格式是什么?
以下是参数选择选项
的脚本{
name:'client',
index:'client',
jsonmap:'projetID.clientID.nom',
editable: true,
edittype:"select",
width:110,
editoptions: {
datatype: "json",
dataUrl:'http://localhost:8080/GestionCra/clientsRest/listJsonSelect',
dataEvents :[
{
type: 'change',
fn: function(e) {
var thisval = $(e.target).val();
$.get('http://localhost:8080/GestionCra/projetsRest/listJsonSelect?id='+thisval, function(data) {
var res = $(data).html();
$("#projet").html(res);
}); // end get
}//end func
} // end type
] // dataevents
}, // edit option
search:true,
stype:'text'
}
以下是使用数据填充select元素的方法 返回字符串机智格式:id:value; id:value ... //方法
@RequestMapping(value = {"/listJsonSelect"}, method = RequestMethod.GET)
public String listJsonSelect() {
List<Client> listC=service.listClients();
String clients="";
for (Client client : listC) {
clients+=client.getId()+":"+client.getNom()+";";
}
if(clients.length()>2)
clients=clients.substring(0,clients.length()-1);
return clients;
}
执行给出此jquery错误:未捕获错误:语法错误,无法识别的表达式:1:客户端1; 2:客户端2; 3:客户端3; 4:dfsdf; 5:sdfsdf; 6:sdfsdf; 7:sdfsd; 8:sdfsd; 9:sdfsd; 10:fsdf; 11:sdfsdf
答案 0 :(得分:0)
Fixall.Site回答
根据jqgrid文档,您的问题是dataUrl需要返回包含select元素的HTML,而不是JSON: editoptions dataUrl参数仅对edittype:select元素有效。 dataUrl参数表示应从中获取html select元素的url。 设置此选项后,元素将填充AJAX请求中的值。数据应该是带有所需选项的有效HTML select元素 - 类似于:
<select>
<option value='1'>One</option>
<option value='2'>Two</option>
...
</select>
所以最简单的解决方案是让你只返回HTML。 也就是说,我不喜欢直接返回UI元素的想法。另一个选择是使用buildselect函数为您构造select元素: 仅当设置了dataUrl参数时,此选项才相关。当服务器响应无法构建select元素时,您可以使用自己的函数来构建select。该函数应该返回一个包含select和options值的字符串,如dataUrl选项中所述。传递给此函数的参数是服务器响应 这个答案提供了如何使用buildselect的示例。
答案 1 :(得分:0)
这是我在控制器中的代码。
$datos= $this->findAll( $criteria );
$data="<select>";
foreach ($datos as $value){
$data .="<option value='".$value->datoValidoId."'>".$value->datovalido."</option>";
}
$data .="</select>";
return $data;