首页 > 解决方案 > 如何比较jsp页面和ajax页面的响应?

问题描述

我正在比较从 jsp 页面获得的响应与 ajax 。如果 out.print() 打印成功消息,我想执行,所以我想在成功的 ajax 函数中执行操作。我在比较数据。但它不工作。我总是去其他部分。我是 ajax 新手。可以请帮我解决这个问题。

      $.ajax({
    url: "login.jsp",
    //datatype: "text",
    type: "POST",

    data: datatopost,
    success: function(data){

        if(data.search("success")!=-1){ 
            console.log(data.data);
              $('#loginmessage').html(data);
              $("#spinner").css("display", "none");
            //show message
            $("#loginmessage").slideDown();
          //  window.location = "mainpageloggedin.jsp";
         //$('#loginmessage').text(data);  
        }else{
       // $('#loginmessage').text(data);   
            //hide spinner
            //window.location = "mainpageloggedin.jsp";
            $("#spinner").css("display", "none");
            //show message
            $("#loginmessage").slideDown();
        }
    },
    error: function(){
        $("#loginmessage").html("<div class='alert alert-danger'>There was an error with the Ajax 
    Call. Please try again later.</div>");
        //hide spinner
        $("#spinner").css("display", "none");
        //show message
        $("#loginmessage").slideDown();

    }

});

jsp代码...

 <%@ include file="connection.jsp"%>
 <%
 String email=request.getParameter("loginemail");
 String loginpass=request.getParameter("loginpassword");
    ResultSet rs=st.executeQuery("select password from users where email='"+email+"'");
 if(rs.next())
 {
 String password1=rs.getString(1);
 if(password1.equals(loginpass))
  {
    session.setAttribute("email",email);
    out.print("success");

   }
    else
  {
    out.print("invalid combination of email and password");
    }
 } else
     {out.print("this account does not have information");
   }

   %>

标签: javascriptajaxjspjquery-uiservlets

解决方案


我怀疑它与.search()返回的数据或类型有关。

首先,始终查看控制台和网络以查看 AJAX 发送和接收的数据包。如果您没有得到预期的回报,您可能需要查看您的 Java。

如果您得到预期的结果,请考虑以下代码。

$.ajax({
  url: "login.jsp",
  datatype: "text html",
  type: "POST",
  data: datatopost,
  success: function(data){
    console.log(data);
    if(data.search("success") > -1){ 
      console.log("Found 'success' in AJAX Package.");
      $('#loginmessage').html(data);
      $("#spinner").css("display", "none");
      //show message
      $("#loginmessage").slideDown();  
    } else {
      $("#spinner").css("display", "none");
      //show message
      $('#loginmessage').html("Login Failed. " + data);
      $("#loginmessage").slideDown();
    }
  },
  error: function(x, stat, err){
    $("#loginmessage").html("<div class='alert alert-danger'>There was an error with the Ajax. Please try again later. (" + stat +", " + err + ")</div>");
    //hide spinner
    $("#spinner").css("display", "none");
    //show message
    $("#loginmessage").slideDown();
  }
});

error在大多数情况下,除非 Web 服务器出现错误,否则AJAX 不会出现 401、404 或 500 错误。所以我们要确保我们在 in 中完成大部分工作,success当我们获得 200 状态时触发。

所以一些文本包又回来了。根据您的 Java,这可能是successinvalid combination of email and passwordthis account does not have information. 我们现在可以通过控制台看到该软件包是什么。然后我们需要对其进行测试。

由于这是针对 AJAX 的,因此无法为我测试它。通常最好使用最简单的逻辑测试。所以!= -1会起作用,但> -1同样好并且不那么混乱。


推荐阅读