【发布时间】:2018-10-28 07:35:14
【问题描述】:
我是 UI 新手,我们正在尝试使用 JQuery 实现 Web 调用,其中我们有一个奇怪的 webcall 问题,即当我们尝试进行 post http 调用时,我们在服务器访问日志中有观察者进行第一个 http post 调用,然后立即存在一个 http get 调用。
请在 .jsp 页面下方找到:
<html>
<head>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<%
String urlVal = (String) request.getAttribute("dataURL");
%>
<%
String emailID = (String) request.getAttribute("emailID") ;
%>
<script type="text/javascript">
var url="<%=urlVal%>";
alert(url);
function navigateWithForm() {
var form = $('<form></form>');
form.attr({
method: 'POST',
action: url
});
form.append(getInput());
form.appendTo('body').submit();
}
function getInput() {
alert("<%=emailID%>");
return $('<input type="hidden" />').attr({
name: 'header',
value: '<%=emailID%>'
});
}
$(document).ready(function() {
navigateWithForm();
});
</script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
</html>
在后端,服务部署在 weblogic 中,它是在 spring 2.5 框架中设计的。我们有用于负载平衡的 apache 代理服务器。
任何帮助将不胜感激。
【问题讨论】:
-
你能解释一下到底是什么问题吗?您是说您看到的是
get请求,而不是post请求? -
查看浏览器的 Network 控制台。您可能必须启用 “保留日志” 选项,但您应该能够看到所有请求和响应。如果我不得不猜测,对您的 POST 请求的响应是带有
Location标头的 302 / 303,从而导致立即 GET 请求。见en.wikipedia.org/wiki/Post/Redirect/Get -
@Phil 因为我没有在 Jquery 中导航 url,所以它应该是 302 状态码。这是简单的发布表单,但表单会提交两次,一次获取并发布纠正我,如果我错了。
-
@Taplar 是的,在控制台日志中,我看到一个带有 302 http 响应的 post 表单提交,然后 http get 提交 500,因为服务器由于缺少表单数据而无法执行操作。跨度>
-
添加反对票不是问题,我希望添加反对票的人请告诉我错误。这对理解问题非常有帮助。
标签: javascript java jquery spring-2.5