JS一个var如何接受后台传回json数据
easyUI有个demo上面是这样的
<script>
var products = [
{productid:'FI-SW-01',name:'Koi'},
{productid:'K9-DL-01',name:'Dalmation'},
{productid:'RP-SN-01',name:'Rattlesnake'}]
<script>
<body>
<th field="productid" width="100" formatter="productFormatter" editor="{type:'combobox',options:{valueField:'productid',textField:'name',data:products,required:true}}">Product</th>
</body>
就是一个下拉选有3个选项,Koi、Dalmation和Rattlesnake,现在说我的下拉选的选项需要从后台获取数据,那么我想要这个var products = 后台获得的json数据,怎么做?就是一个json数据赋值给JS变量问题,我试过在函数里面定义一个var接受json数据但是不行。如下:
$.ajax({
url:'${pageContext.request.contextPath}/AjaxRegistration_list'
})
.done(function(response){
console.log("success"+JSON.stringify(response));
var products = JSON.stringify(response);
//这里能打印出json数据,但是上面的var products好像并不能被th中的editor使用data:products这样接受
alert(products);
})
.fail(function(){
console.log("error")
});
不清楚你返回json的response内容是怎样,假如是这样的:
{
"data" :
[
{
"productid" : "FI-SW-01",
"name" : "Koi",
},
{
"productid" : "K9-DL-01",
"name" : "Dalmation",
}
],
"success" : true
}
栗子:
<script>
var products = [];
for(var i=0;i<response.data.length;i++){
var obj=response.data[i];
products.push({
productid:obj.productid,//'FI-SW-01',
name:obj.name//'Koi'
})
}
console.log(products);
</script>
combobox需要的数据格式是[
{productid:'FI-SW-01',name:'Koi'},
{productid:'K9-DL-01',name:'Dalmation'},
{productid:'RP-SN-01',name:'Rattlesnake'}]数组格式的;
我觉得你应该是数据格式不对吧。
var url = "admin/FrmQueryAllGroup.do";
$.getJSON(url,function(json) {
$('#cc').combobox({
data: json.jsonResult.rows,
valueField: 'ID',
textField: 'TEXT'
});
});
$.ajax({
type: "POST",
url: 'admin/FrmQueryAllGroup.do',
dataType: "json",
success: function(json) {
$('#cc').combobox({
data: json.jsonResult.rows,
valueField: 'ID',
textField: 'TEXT'
});
}
});
你应该用JSON.parse()而不是用JSON.stringify()
Product
不用看都知道跟你的插件方式冲突,你想想直接js接受可以,这样不可以,要么是你的插件不支持这样获取,要么是你这个地方获取的方式有问题
你得把你console输出的response贴出来,才能看到你response响应的值,根据这个值去取值
你前面已经定了products,你再回调函数里面又重新定义了products,这个回调函数里的变量成了局部变量,不会赋值上层的全局变量products。