是否有必要在以下代码中使用ajax?

时间:2014-07-07 10:01:28

标签: java javascript jquery ajax jsp

我有两个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并从同一个控制器获取数据?

2 个答案:

答案 0 :(得分:0)

你的疑问绝对有意义,因为呼叫是在onload()

进行的,所以无需拨打AJAX电话

通常,AJAX调用有用/应该在文档准备好后以及客户端/用户执行某些操作时编写。

答案 1 :(得分:0)

来自您在问题中的修改

  

不。你不能这样做

首先要了解ajax的目的,

Ajax用于加载页面的一部分,而不刷新整个页面

因此,在您的设计中,您可以使用ajax调用将响应返回到同一个jsp页面

或者将响应转发到页面帖子上没有ajax的其他页面。

希望这会有所帮助!!