日期:2014-05-16  浏览次数:20695 次

Ext.Ajax.request params传值的问题 直接写可以 动态生成的就不行
params = ''
for(var i=0;i<IfieldName.length;i++){
	paramsValue = Ext.getDom(IfieldName[i]).value
	if(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