使用动态列名连接Ajax成功函数结果集

时间:2016-07-04 11:44:57

标签: javascript jquery ajax

我有一个包含多个表单输入的表单,其定义如下:

    <input type="text" name="aname" id="aname" class="form-control dataaccess" data-field="GID" />
<input type="text" name="sname" id="sname" class="form-control dataaccess" data-field="LID" />

然后我有一个ajax函数,其成功函数从控制器返回一个结果集以显示在页面中。这是我的代码

$.ajax({
type: "POST",
url: "controller/method",
data: "id="+data,
success: function(data){
 $(".dataaccess").each(function(){
     var field=data[0].($(this).data("field"));
     $("#"+$(this).attr("id")).val(field);
 });

});

但是,我的结果集没有与我从相应的输入数据字段属性获得的字段名连接。我在哪里弄错了?谢谢

数据返回的数据:

[{"ID":"GR02","Name":"Admins","Valid":"30","Block":"No ","Descr":"Description"}]

3 个答案:

答案 0 :(得分:0)

试试这个:

success: function(data){
     $(".dataaccess").each(function(){
         var field=data[0].($(this).data("field"));
         console.log(field);
         $(this).val(field);
     });
});

答案 1 :(得分:0)

对于动态属性,不应使用属性访问器(。),可以使用索引表示法

$.ajax({
    type: "POST",
    url: "controller/method",
    data: "id="+data,
    success: function(data){
     $(".dataaccess").each(function(){
         var self = this;  
         var field=data[0][$(self).data("field")];
         $("#"+$(self).attr("id")).val(field);
     });

    });

在ajax调用之外将this的引用定义为self,这样在ajax执行时就可以使用。

答案 2 :(得分:0)

在用于连接的JavaScript或JQuery + Operator中:

var field=data[0]+($(this).data("field"));