【问题标题】:Processing "success" string returned from servlet via ajax call通过ajax调用处理从servlet返回的“成功”字符串
【发布时间】:2015-08-26 20:56:45
【问题描述】:

我有一个 servlet,它接受我的 ajax 请求,它将用户名和密码作为参数从我的 ExtJs 项目中的 LoginView 传递。这是相同的代码:

public class UserLoginController  extends MultiActionController {
OrgTreeService orgTreeService;

ModelAndView mv;
public String getLoginStatus(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse)
        throws Exception{
    String str1 = paramHttpServletRequest.getParameter("user");
    String str2 = paramHttpServletRequest.getParameter("password");
    String s="";
      System.out.println("---node"+str1);
      System.out.println("---node"+str2);
      if(str1.equals("admin") && str2.equals("admin")){
          s="success";
      }else{
          s="failure";
      }


      return s;
}

这就是我从视图中发出 ajax 请求的方式:

doLoginClicked : function() {
    console.log("button pressed this time");
    var name = this.view.getUsername();
    var pass = this.view.getPassword();
    console.log(name);
    console.log(pass);

    Ext.Ajax.request({
        url: 'login/getLoginStatus.action',
        method:'post',
        params: {
            user: name,
            password: pass
            }
    ,
            success: function(response) {


                console.log(response);



                if (response=="success") { 

                  //  login.close(); 


                } else {
                    console.log("inside failure");


                    Ext.Msg.show({
                        title:'Fail!',
                        msg: response, 
                        icon: Ext.Msg.ERROR,
                        buttons: Ext.Msg.OK

                    });
                }
            },
            failure: function(response) {
                console.log("inside failure");

                  Ext.Msg.show({
                        title:'Error!',
                        msg: response,
                        icon: Ext.Msg.ERROR,
                        buttons: Ext.Msg.OK
                    });
                }
        });
    }

它确实在 servlet 的控制台中显示了用户名和密码,但我无法接受来自 servlet 的“成功”响应并采取相应措施。这是浏览器控制台中显示的响应:

Object {request: Object, requestId: 1, status: 200, statusText: "OK", responseText: ""…}getAllResponseHeaders: () {arguments: nullcaller: nulllength: 0name: ""prototype: response.getAllResponseHeadersconstructor: () {arguments: nullcaller: nulllength: 0name: ""prototype: response.getAllResponseHeaders__proto__: Empty() {}<function scope>__proto__: Object__proto__: Empty() {}<function scope>getResponseHeader: (header) {request: Objectasync: truebinary: falseheaders: Objectid: 1options: Object__proto__: ObjectrequestId: 1responseText: ""responseXML: nullstatus: 200statusText: "OK"__proto__: Object

有没有办法在 servlet 返回“Success”时显示主页?

【问题讨论】:

  • 如果您在 http 客户端(邮递员、curl 等)中发出请求,服务器会返回您所期望的吗?
  • 您是从responseText 变量中的servlet 中获取success 还是failure 字符串?
  • @phtrivier 从 servlet 打印时它确实在我的 IDE 控制台中显示成功消息,现在在处理用户名和密码后显示内部服务器错误 500 这是错误gyazo.com/e889e44dbaf6b6d5f8506ceb61784065
  • @rawatdeepesh 您的图像中的错误似乎在 client 端。当收到 500 时,您可能在 server 端出现异常(很可能是因为请求没有“用户”或“密码”参数,并且 str1 或 str2 最终为空。 )

标签: javascript ajax servlets extjs


【解决方案1】:

success: function(response)

上述代码行中的response 是一个对象。您必须更深入地了解您的对象,例如 response.status == '200'response.responseText == "success"

由于您没有给出您得到的确切响应,我将无法提供确切的代码,但这就是问题所在。

【讨论】:

  • 嗨 Rupesh,它对正确和不正确的用户名和密码给出了相同的响应。更改 servlet 条件后,IDE 控制台确实显示它是否成功,但它给出了一个错误,而给出回复,这是错误:gyazo.com/e889e44dbaf6b6d5f8506ceb61784065
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-28
  • 1970-01-01
  • 2015-10-16
  • 1970-01-01
  • 2011-10-20
  • 1970-01-01
相关资源
最近更新 更多