即使在收到服务器的响应后,Failure Function也会收到回调

时间:2014-11-23 18:15:28

标签: ajax extjs extjs4 extjs4.1 extjs3

当我提交表单时,我有一个包含两个文本域用户名和密码的表单 成功呼叫并正确发送响应。但是在提交方法失败的时候会被调用。

这是我的代码。

                                    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。

2 个答案:

答案 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中的成功函数被成功调用。