当我提交表单时,我有一个包含两个文本域用户名和密码的表单 成功呼叫并正确发送响应。但是在提交方法失败的时候会被调用。
这是我的代码。
form.submit({
success: function(form, action) {
console.log(action);
alert("Success");
},
failure: function(form, action) {
console.log(action);
alert("fail");
}
});
我的Servlet代码。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
JSONObject obj=new JSONObject();
try {
obj.put("sucess",true);
out.print(obj.toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
但是如果我用Ext.Ajax替换了form.submit,则成功调用成功函数。
Ext.Ajax.request({
url:"login",
success: function(result, request) {
alert("success");
},
failure:function(response){
alert("failure");
console.log(response);
}
});
为什么form.submit无法正常工作?
注意:我没有在服务器端进行任何身份验证,我的目的是检查我是否能从服务器获取json响应,对于Ext.Ajax.Request我不发送params。
答案 0 :(得分:0)
尝试检查哪种类型的错误,为您提供如何排除故障的方向:
failure: function(form, action) {
switch (action.failureType) {
case Ext.form.action.Action.CLIENT_INVALID:
Ext.Msg.alert('Failure', 'Form fields may not be submitted with invalid values');
break;
case Ext.form.action.Action.CONNECT_FAILURE:
Ext.Msg.alert('Failure', 'Ajax communication failed');
break;
case Ext.form.action.Action.SERVER_INVALID:
Ext.Msg.alert('Failure', action.result.msg);
}
}
答案 1 :(得分:0)
发现问题
我犯了一个错误,在谈到我的问题之前,我只想解释一下 form.submit(success,failure)将在成功密钥上的服务器json响应上工作,但Ajax.request使用请求的响应代码而不是成功:true / false来确定要调用哪个处理程序。
在构建json对象的下面的代码中,我成功拼错了
try {
obj.put("sucess",true);
out.print(obj.toString());
}
在纠正成功后,我在form.submit中的成功函数被成功调用。