Ext.Ajax.request params传值的有关问题 直接写可以 动态生成的就不行
Ext.Ajax.request params传值的问题 直接写可以 动态生成的就不行params for(var i0iIfieldName.le
Ext.Ajax.request params传值的问题 直接写可以 动态生成的就不行
params = ''for(var i=0;i<IfieldName.length;i++){paramsValue = Ext.getDom(IfieldName[i]).valueif(paramsValue==undefined){paramsValue=''}params = params+IfieldName[i]+':\''+paramsValue+'\','}params = params+'formID:\''+formID+'\''params = '[{'+params+'}]'params = eval(params)Ext.Ajax.request({url:"/DataOperate/exeFormInsert.asp", params:params,success:function(response){eval(response.responseText)loadList(page)win.destroy();}})
params 这块没有问题 eval之前输出[{workFlowName:'测试',workFlowDiv:'test',workFlowOrder:'1',formID:'5'}]
eval之后么就是object了
直接写params的话是 params:{workFlowName:'测试',workFlowDiv:'test',workFlowOrder:'1',formID:'5'} 是没有什么问题的 1 楼 755816 2010-02-10 昏倒了
把params = '[{'+params+'}]'
改成params = '({'+params+'})'
就好了
谁来解释下为什么? 2 楼 Rooock 2010-02-10 Ext.Ajax.request的params参数本质上只有接收String和Object两种类型, 当然也可以接受一个function. 前提是这个function必须有返回值. 且返回值必须是String类型或者Object类型.
如果想传递一个对象进去.完全可以不eval.
var params = {};
params.formID = 123;
params.IfieldName[0] = 'abc';
就可以了.
或者.给个你必须要用eval的理由先. 3 楼 heroyanglei 2010-11-22 问题出在eval(String)函数上面。对于对象声明语句来说,仅仅是执行,并不能返回值。为了返回常用的“{}”这样的对象声明语句,必须用括号括住,以将其转换为表达式,才能返回其值。
参考:http://wanyij.blog.51cto.com/46570/43794