2014-02-09 107 views
0

考虑Ajax请求:如何在ajax成功后将变量传递给JS代码的HTML页面?

var idNumber = $("#Field_1").val(); 
var servletUrl = "someURL"; // some url goes here 

$.ajax({ 
    url: servletUrl, 
    type: 'POST', 
    cache: false, 
    data: { }, 
    success: function(data){ 
     alert(data); 
     window.location = "./replyToYou.html"; 
    } 
    , error: function(jqXHR, textStatus, err){ 
     alert('text status '+textStatus+', err '+err + " " + JSON.stringify(jqXHR)); 
    } 
}); 

我怎么能传球,成功idNumberreplyToYou.html,我怎么能抓住它replyToYou.html

非常感谢

回答

1

你有不同的解决方案:

1 - 首先是使用的queryString:

success: function(data){ 
    alert(data); 
    window.location = "./replyToYou.html?idNumber=" + idNumber; 
} 

然后使用此功能查询字符串读它(我使用它作为查询字符串帮手其原始创建于POST):

function getParameterByName(name) { 
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
    results = regex.exec(location.search); 
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 
getParameterByName("idNumber"); 

2-另一种选择是使用localStorage

success: function(data){ 
    alert(data); 
    localStorage.setItem("idNumber",idNumber); 
    window.location = "./replyToYou.html"; 
} 

,并在其他页面得到它就像:

localStorage.getItem("idNumber") 
+0

纠正我,我错了,但是使用你建议的'1st'方法会导致用户在地址栏中看到传递的细节? – ron

+0

@ron:这是正确的,但你可以使用Base64或其他,来编码它。我自己通常采用第二种解决方案。 –

+0

是的,我在浏览器选项卡中看到类似这样的内容:'/register_replyToYou.html?idNumber = 44444444444444444444' – ron

1

编辑代码JS在成功的部分:如果

success: function(data){ 
    alert(data); 
    window.location.href = "./replyToYou.html?idNumber=" + idNumber; 
} 
+0

这是一个HTML页面,所以你必须有一些方法从URL字符串获取IDNumber。 –

相关问题