Javascript 如果从jqgrid colmodel创建post数据,如何删除eval

Javascript 如果从jqgrid colmodel创建post数据,如何删除eval,javascript,jquery,jqgrid,jslint,Javascript,Jquery,Jqgrid,Jslint,下面的代码用于从jqGrid colmondel创建post数据并进行post。 它使用eval(),因为post键/列名称未知。 如何将eval()替换为更好的 function gridValidate(elem, column, entity, eventText) { var i, row, postData = { _column: column, _entity: entity }, colModel = $("#grid").jqGrid

下面的代码用于从jqGrid colmondel创建post数据并进行post。 它使用eval(),因为post键/列名称未知。 如何将eval()替换为更好的

function gridValidate(elem, column, entity, eventText) {
    var i,
      row,
      postData = { _column: column, _entity: entity },
      colModel = $("#grid").jqGrid('getGridParam', 'colModel'),
      val;

  row = $(elem).closest('tr.jqgrow');
  postData._rowid = row.attr('id');
  for (i = 1; i < colModel.length; i = i + 1) {
            if (colModel[i].edittype !== "textarea") {
                switch (colModel[i].edittype) {
                    case "custom":
                        val = $('#' + postData._rowid + '_' + colModel[i].name).find("input").val();
                        break;

                    default:
                        val = $('#' + postData._rowid + '_' + colModel[i].name).val();
                        break;
                }
                eval('postData.' + colModel[i].name + '=val');
            }
        }
    }
    $.ajax('Grid/Validate', {
        data: postData,
        type: 'POST',
        } );
}
函数gridValidate(元素、列、实体、事件文本){
var i,
一行
postData={u列:列,{u实体:实体},
colModel=$(“#grid”).jqGrid('getGridParam','colModel'),
瓦尔;
行=$(elem).closest('tr.jqgrow');
postData._rowid=row.attr('id');
对于(i=1;i
您可以使用
符号和
[]
符号来获取和设置对象属性

具体来说,
obj.a===obj['a']

如果不使用
(或
),则
[]
符号也接受变量,而
符号则不接受

因此,在你的情况下:

postData[colModel[i].name] = val;

您可以使用
符号和
[]
符号来获取和设置对象属性

具体来说,
obj.a===obj['a']

如果不使用
(或
),则
[]
符号也接受变量,而
符号则不接受

因此,在你的情况下:

postData[colModel[i].name] = val;
替换

eval('postData.' + colModel[i].name + '=val');
与:

这应该可以满足您的需要。

替换

eval('postData.' + colModel[i].name + '=val');
与:

这应该能实现你想要的