javascript - 如何比较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");
}
%>
解决方案
我怀疑它与.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,这可能是success
、invalid combination of email and password
或this account does not have information
. 我们现在可以通过控制台看到该软件包是什么。然后我们需要对其进行测试。
由于这是针对 AJAX 的,因此无法为我测试它。通常最好使用最简单的逻辑测试。所以!= -1
会起作用,但> -1
同样好并且不那么混乱。
推荐阅读
- android - 在 Android Studio 中运行之前必须卸载应用程序
- javascript - 使用 Javascript 删除特定 cookie
- java - Java:如果另一个线程已经在其中,则新线程将跳过同步方法
- javascript - 提交带有链接的表单不起作用
- c# - 在包中使用连接字符串
- testing - 如何集成测试控制器,该控制器内部的方法从另一个站点获取令牌
- ios - 使用 IQKeyboardManagers 时 UITextView 的高度会增加
- python - 在 Python 中用 NaN 替换数值
- javascript - this.setState 不是函数,并且 .bind(this) 不是函数
- ruby - 我们如何谈论不继承自 Ruby 中的 `Class` 类的类?