我有一个JSP页面,我用它来重定向到另一个url(跨域),所以使用jQuery我放置了一个按钮点击事件,在该事件下应该触发response.sendRedirect,但是一旦页面加载它就会重定向它甚至没有等待警报。这里有什么问题?请帮忙。
在身体负载上调用load()
<script language="JavaScript">
function load(){
<%
String message=(String)request.getAttribute("error");
if(message != null){
out.println("alert(\"" + message + "\");");
}
%>
}
/*a range of options (products) based on which it decides redirection or form submission
* will lead to the new webapp*/
var productArray=["iirDefault","ilmDefault","mdmDefault"];
$(document).ready(function(){
});
/*Button event handler for the intermediate screen for product selection after login*/
$('#btnLaunchCSM').click(function(event){
event.preventDefault();
var selectedProduct=$('input[name=product_name]:checked').val();
if(jQuery.inArray(selectedProduct, productArray)!=-1)
{
e_add=$("#emailaddress").val();
p_id=$('input[name=project_id]:checked').val();
alert(e_add+", "+p_id);
<%
String e_add=request.getParameter("email_id");
String p_id=request.getParameter("project_id");
response.sendRedirect("http://abhishek:9090/abc/view/loginProxy.jsp?email_id="+e_add+"&project_id="+p_id);
%>
}
else
{
$("#launchSSO").submit();
}
});
</script>
答案 0 :(得分:2)
您似乎期望JSP scriptlet 和JavaScript在编码时同步运行。这不是真的。 Java / JSP在Web服务器中运行并生成HTML。 HTML / JS在webbrowser中运行。右键单击浏览器中的页面并查看源。如果Java / JSP已经完成了它的工作,那么在生成的HTML / JS输出中你不应该看到它的任何一行。
您需要向服务器发送(ajax)HTTP请求。您可以使用jQuery或仅使用普通表单提交。或者你可以在JS中完全执行重定向。用以下方法替换那个臭<% %>
块:
window.location = "http://abhishek:9090/abc/view/loginProxy.jsp?email_id="+e_add+"&project_id="+p_id;