我有未來JSP頁面上的谷歌應用程序引擎的工作原理:
<%@ page contentType="text/html; charset=windows-1251" language="java" %>
<%@ page import="com.wedding.Register" %>
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<script src="js/jquery.min.js" type="text/javascript"></script>
<script src="js/bootstrap.min.js" type="text/javascript"></script>
<script type="text/javascript">
function submitMyForm(button) {
var myForm = $(button).closest('form');
$.ajax({
url: $(myForm).attr('action'),
type: "post",
contentType:attr("enctype", "multipart/form-data"),
data: $(myForm).serialize(),
statusCode: {
400: function() {
$('.form-inline').after("<h1>400!</h1>");
},
200: function() {
$('.form-inline').after("<h1>200!</h1>");
}
}
});
}
</script>
</head>
<body>
<div class="container">
<%
String companyName = Register.getLoggedInCompanyName(request);
if (companyName == null) {
%>
<div class="navbar">
<div class="navbar-inner">
<a class="brand" href="#">Menu</a>
<ul class="nav">
<li><a href="/">Home</a></li>
<li class="active"><a href="/reg.jsp">Register</a></li>
</ul>
</div>
</div>
<div class="hero-unit">
<h1>Login</h1>
<p>Enter login credentials</p>
<p>
<form action="/reg?action=login" class="form-inline" method="post" enctype="multipart/form-data">
<input type="text" name="email" class="input-xlarge" placeholder="">
<input type="password" name="password" class="input-xlarge" placeholder="">
<button type="submit" class="btn" onClick="submitMyForm(this)">Login</button>
</form>
</p>
</div>
<%
} else {
%>
<div class="navbar">
<div class="navbar-inner">
<a class="brand" href="#">Menu</a>
<ul class="nav">
<li><a href="/">Home</a></li>
<li class="active"><a href="/reg?action=logout">Logout</a></li>
</ul>
</div>
</div>
<div class="hero-unit">
<h1>Error</h1>
<p>Error.</p>
</div>
<%
}
%>
</div>
<div id="footer">
<div class="container">
<p class="muted credit"></p>
</div>
</div>
</body>
的問題是,當一個點擊按鈕的形式發送到服務器,但如果服務器返回400 HTTP狀態代碼
$('.form-inline').after("<h1>400!</h1>");
未被調用。
我也試過成功/錯誤功能和其他HTTP代碼,但沒有成功。有趣的是,它曾經工作過,然後總是失敗。瀏覽器不是向HTML添加新元素,而是重定向到生成的錯誤頁面。
HttpServletResponse.sendError(400);
我已經簽了正確的請求和響應發送的狀態代碼使用返回。我也檢查過最新的jquery是鏈接的。
我看不到你如何停止表單提交。或者,你是否在你的片段中錯過了那部分? – Alexander
「停止表單提交」是什麼意思?對不起,我是JS新手。我嘗試了很多樣品,但沒有一個適合我。 – Vsevolod
我在回答中接過了這個 – Alexander