在成功响应之后,通过ajax将值传递到第二个jsp页面

时间:2015-07-26 07:23:13

标签: javascript jquery ajax jsp

我正在尝试向page1.jsp中的java文件发送ajax请求。根据响应,我将重定向到jsp页面。那就是:如果回复是"成功"我想重定向到CreateBluemixMonkey.jsp页面以及参数" data"。这可能通过以下代码。根据我的理解,自" POST"方法被重定向到java类,一旦返回控件,page1.jsp中的变量将无法在CreateBluemixMonkey.jsp中被识别。请在下面的page1.jsp中找到代码:

$(document).ready(function(){

var userInfo = ['username','password' ];

for (var i=0; i < userInfo.length; i++) {   
var ele = userInfo[i];
values[ele] = $('#' + ele).val();
datas = datas + '"'+ ele + '"' + ': ' + '"' + values[ele] + '"' +',';
}
datas = datas + "}";


 $('#submit-button').click(function(){

$.ajax({
    type: "post",
    url: "./api/v2/chaos",
    data: datas,
    success: function(msg){
                       var successUrl = "CreateBluemixMonkey.jsp"; 
                       window.location.href = successUrl;

                },
                error: function(jqXHR,error, errorThrown) {
                $('#output').html(  jqXHR.status+ "  "         +jqXHR.responseText);

                }


    }) //ajax-close

  }) //click-function

 }) //document-ready

3 个答案:

答案 0 :(得分:1)

执行window.location.href = successUrl;后,jsp页面将被重定向到CreateBluemixMonkey.jsp,并带有新的请求和响应对象。因此,所有数据都将被垃圾收集。您可以尝试在session中存储数据,因为session可供所有网页使用。

您可以在http://www.tutorialspoint.com/jsp/jsp_session_tracking.htm

了解相关信息

答案 1 :(得分:1)

生成datas的6条线非常狡猾:

  • values尚未声明,如果这在values[ele]上没有失败,那只是因为全局范围包含一个对象values,您和&#39} #39;重新变异。
  • 解决此问题后,datas将如下所示:"username": "ambikanair","password": "wnt#*@$",}。您错过了开头{,并且您有一个尾随,。如果服务器期望有效的JSON,它将会失望。
  • 您还没有逃脱数据。你应该养成这样做的习惯,因为有很多情况下,逃避事情可能是一个安全漏洞。在这种情况下,安全性不是问题,因为恶意用户无论如何都可以发布他们想要的任何内容,因此您不应该依赖它们而不是发布无效的JSON等。*除了恶意攻击之外,还有其他问题。也有可能出现奇怪字符的字符串意外弄乱它。请记住,密码字段可能包含非字母数字字符。例如,如果密码为my"passwordmypassword\,则datas将无效JSON。

转义字符串可能很棘手,但您通常不必自己动手操作。在这种情况下,您应该使用函数JSON.stringify,它是javascript语言的一部分。我按如下方式重写这些行:

var values = {};
for (var i=0; i < userInfo.length; i++) {   
    var ele = userInfo[i];
    values[ele] = $('#' + ele).val();
}
var datas = JSON.stringify(values);

*作为一个例子,如果这是一个问题,可以想象用户输入密码my password", "anotherfield": {"success": true, "data": "ncosneconoabneonvosief"}, "yetanotherfield": "yetanothervalue。您最终会得到一个完全有效的JSON字符串,其中包含不存在的字段,但用户只需在用户名和密码下输入数据即可。

答案 2 :(得分:0)

  

尝试使用URL传递数据,但如果数据很短,这种技术很好   。否则,您将获得最大查询长度错误。

window.location = '/player_detail?data=' + data;