我有两个jsp说test1.jsp和test2.jsp。我的程序流程如下。我想知道这里是否需要ajax?我需要在test1.jsp的文本框中检索数据。但是ajax调用是从不同的页面进行的。我想在test1.jsp中使用控制器响应。我该怎么办?
test1.jsp
<input type="text" id="testid"/>
<input type="button" onclick="fnopenwindow()"/>
<script type="text/javascript" src="abc.js"></script>
test2.jsp
<script>
function fnsample(){
//some code
var l1=/*some value*/
var l2=/*some value*/
fnPassData(l1,l2);
}
</script>
<div id="map"> </div>
<body onload="fnsample()" >
</body>
<script type="text/javascript" src="abc.js"></script>
abc.js
function fnopenwindow(){
window.open("test2.jsp","name","width=600px;height=400px");
}
function fnPassData(l1,l2){
var url="home/test";
var data= 'var1=' + l1 + '&var2=' + l2;
$.ajax({
type:"POST",
url:url,
data:data,
dataType:"json",
success:function(responseJSON){
alert(responseJSON);
}
});
}
控制器类
@Path("test")
public ModelandView gettest(@Context HttpServletRequest request) {
ModelandView responseView = new ModelandView(new JsonView());
//some code here
if (somecondition) {
responseView.addObject("data", dataID);
}
else {
System.out.println("Not present");
}
return responseView;
}
编辑::
我通过ajax将一些数据从我的脚本发送到控制器并将响应返回到同一个jsp即。 test2.jsp。但我想将控制器的响应发送到不同的jsp即。 test1.jsp。因为我没有刷新test2.jsp的任何部分有没有其他方法将数据从test2.jsp发送到控制器,然后从我的test1.jsp调用ajax并从同一个控制器获取数据?
答案 0 :(得分:0)
你的疑问绝对有意义,因为呼叫是在onload()
通常,AJAX调用有用/应该在文档准备好后以及客户端/用户执行某些操作时编写。
答案 1 :(得分:0)
来自您在问题中的修改
不。你不能这样做
首先要了解ajax的目的,
Ajax用于加载页面的一部分,而不刷新整个页面
因此,在您的设计中,您可以使用ajax调用将响应返回到同一个jsp页面
或者将响应转发到页面帖子上没有ajax的其他页面。
希望这会有所帮助!!