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。