首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >postData方法不执行函数

postData方法不执行函数
EN

Stack Overflow用户
提问于 2012-11-01 00:18:15
回答 1查看 1.3K关注 0票数 1

我有两个jqGrids。在第一个网格中,我选择一行,第二个网格根据第一个网格的id用数据刷新。至少这是它应该是如何工作的。

代码语言:javascript
复制
//This is code from the second grid
postData: '{ lobId: ' + BudgetCore.getLobId() + ' }',

//Snippet from BudgetCore...
getLobId: function () {
    var row = jQuery(BudgetCore.GridTables.Lob).jqGrid('getGridParam', 'selrow');
    return row;
}

在Chrome中,我尝试调试函数getLobid(),但它从未执行过。发送的postData请求:{ lobId:null }。

如果我将上面的代码更改为'{ lobId:‘+1+’}‘,它可以工作,所以一定是有什么错误导致这个函数不能执行。在Chrome JS控制台中,执行BudgetCore.getLobId()可以正常工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-01 00:24:40

你应该使用

代码语言:javascript
复制
postData: {
    lobId: function () {
        return $(BudgetCore.GridTables.Lob).jqGrid('getGridParam', 'selrow');
    }
}

有关更多详细信息,请参阅the answer

更新了:如果你需要在serializeGridData中额外使用JSON.stringify,那么你不能再使用最简单的serializeGridData版本了

代码语言:javascript
复制
serializeGridData: function (postData) { return return JSON.stringify(postData); }

相反,您应该使用我在the answer中描述的稍微复杂一点的serializeGridData版本

代码语言:javascript
复制
serializeGridData: function (postData) {
    var propertyName, propertyValue, dataToSend = {};
    for (propertyName in postData) {
        if (postData.hasOwnProperty(propertyName)) {
            propertyValue = postData[propertyName];
            if ($.isFunction(propertyValue)) {
                dataToSend[propertyName] = propertyValue(); // call the function
            } else {
                dataToSend[propertyName] = propertyValue;
            }
        }
    }
    return JSON.stringify(dataToSend);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13162354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档