看了一个星期的ExtJS3.0的API与example,觉得应该可以用了,使用firedebug与skpet写了个登录窗口,测试一直使用的是Firefox,做完之后可以正常运行,但是调到Maxthon里显示虽然没有Firefox里好看,但是也对付,最烦恼的是表单Ajax提交后出错...,错误信息为
网页错误详细信息用户代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
时间戳: Thu, 10 Dec 2009 11:42:37 UTC
消息: 语法错误
行: 11774
字符: 13
代码: 0
URI: http://bbs.baidu.com/DataBaseEditor/extjs/ext-all-debug.js

去看了下该行为return eval("("+json+')');
贴下程序源码(login_form.js):
/*
 * login_form.js
 * Created by zyb Date:2009-12-8
 * @import ExtJS
 */
Ext.BLANK_IMAGE_URL="../../extjs/resourses/images/default/s.gif";
Login_form = function(){
var root;
var formpanel;
var form;
var user_field;
var pwd_field;
var submit_btn;
var cancel_btn;
var sex_box;
return {
init:function(){
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget="under";
root = this;
//创建用户名textField
user_field = new Ext.form.TextField({
fieldLabel:"用户名",
name:"userName",
id:"userName",
allowBlank:true,
blankText:"用户名"+"不能为空!",
emptyText:"请输入"+"用户名"+"!",
minLength:5,
minLengthText:"用户名"+"长度大于5小于12",
maxLength:12,
maxLengthText:"用户名"+"长度大于5小于12",
regex:/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,11}$/,/*汉字/^[\u4E00-\u9FA0]{2,4}$/*/
regexText:"用户名必须以字母开头不能有特殊字符"
});
//密码文本框
pwd_field = new Ext.form.TextField({
fieldLabel:"密码",
name:"pwd",
id:"pwd",
inputType:"password",
allowBlank:true,
blankText:"密码不能为空!",
emptyText:"请输入"+"密码"+"!",
minLength:5,
minLengthText:"密码"+"长度大于5小于12",
maxLength:12,
maxLengthText:"密码"+"长度大于5小于12"
});
//提交按钮
submit_btn = new Ext.Button({
text:"登陆",
cls:"x-btn-text-icon",
icon:"png/cn.png",
handler:root.submit
});
//取消按钮
cancel_btn = new Ext.Button({
text:"重填",
cls:"x-btn-text-icon",
icon:"png/us.png",
handler:function(b,e){
form.reset();
}
});
//性别单选按钮组--可以去掉(学习中测试用的)
sex_box = new Ext.form.RadioGroup({
fieldLabel:"性别",
inputType:"radio",
id:"sex_box",
columns:2,
items:[{boxLabel:"男",name:"sex",inputValue:"man",checked:true},
{boxLabel:"女",name:"sex",inputValue:"woman"}]
});
//form面板
formpanel = new Ext.form.FormPanel({
title:"User Login",
id:"login_form",
waitMsgTarget:true,
bodyStyle:"padding:5px 5px 0",
frame:true,
anchor:"-20",
labelWidth:60,
width:250,
buttonAlign:"center",
region:"center",//暂时没用
defaults:{width:140,border:true},
defaultType:"textfield"
});
//form赋值
form = formpanel.getForm();
//向面板添加文本框与单选组
formpanel.add(user_field,pwd_field,sex_box);
//添加登录按钮
formpanel.addButton(submit_btn);
//添加重设按钮
formpanel.addButton(cancel_btn);
formpanel.render("div_login");
Ext.fly("login_form").center().dom.align="center";
},
submit:function(b,e){
if(form.isValid()){//form的各项验证是否都已通过
if(!form.isDirty()){//form是否被更改过
Ext.MessageBox.show({animEl:"submit",title:"Message",msg:"请填写表单.",icon:Ext.Msg.INFO,buttons:Ext.Msg.OK,colsable:true});
return false;
}
// Ext.Msg.show({
// title:"正在提交...",
// msg:"正在登陆,请稍后",
// wait:true,
// waitConfif:{interval:200},
// icon:Ext.Msg.INFO,
// width:300
// });
form.submit({
url:"../support.jsp",
method:"POST",
params:{method:"ajax"},
waitMsg:"正在提交...",
waitTitle:"等待",//panel的waitMsgTarget=true后这个不显示
success:function(form,action){
// Ext.Msg.hide();
// Ext.Msg.alert("Success",action.response.responseText);
alert("成功");//服务器返回信息成功之后显示(Ext3.0版本在Maxthon中有不可以的...)
},
failure:function(form,action){
Ext.Msg.hide();
Ext.Msg.show({animEl:"submit",title:"Error!",msg:action.failureType,buttons:Ext.Msg.OK,closable:false,icon:Ext.MessageBox.ERROR});
}
});
}else{
Ext.MessageBox.show({animEl:"submit",title:"Message",msg:"请填写表单.",icon:Ext.Msg.ERROR,buttons:Ext.Msg.OK,colsable:true});
}
}

}
}();
Ext.onReady(Login_form.init,Login_form);
网页文件login_form.html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>login_form.html</title>

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css">
 
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<script type="text/javascript" src="../extjs/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../extjs/ext-all-debug.js"></script>
<script type="text/javascript" src="js/login_form.js"></script>
  </head>
  
  <body>
    <div id="div_login"></div>
  </body>
</html>做测试的服务器端JSP(support.jsp):<%@ page import="java.util.*" contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
Enumeration names = request.getParameterNames();//获取所有参数名称
String method=request.getMethod();
Thread.sleep(2000);//睡眠2秒(当网络延迟)
out.println("<pre>");
while(names.hasMoreElements()){ //输出所有参数
String name = names.nextElement().toString();
out.println("Parameter:"+name+" value:"+request.getParameter(name));
}
out.println("Method:"+method);//输出请求方法
out.println("</pre>");
%>使用的Ext版本是3.0.3版本(没有付费的).
服务端文件修改为值返回一个true是可以正常提交.
初步原因猜测是由于ExtJS对服务器返回信息进行Xml测试和Json测试时产生的错误
(是不是可以设置不对服务器返回进行测试或格式化? 怎么去设置?).