在javascriptPost方法中隐藏查询字符串

时间:2013-09-06 14:56:01

标签: javascript asp.net ajax

我有以下javascript:

  var link = AjaxLocation + "/createDataSet.aspx";
    $j.post(link, null, function() {
        window.location.replace("/admin/SavedDataSet_edit.aspx?businessId="+data);
    }, "html");

createDataSet.aspx页面返回SavedDataSet_edit.aspx页面的businessId ...

每当页面重定向到SavedDataSet_edit.aspx页面时,查询字符串就会显示在浏览器的地址栏中。

如何隐藏Querystring?如果我从浏览器隐藏查询字符串然后如何在SavedDataSet_edit.aspx页面中获取它?

谢谢..

3 个答案:

答案 0 :(得分:1)

有很多方法可以实现:您可以使用cookie(我不建议)您可以发布到我们的页面隐藏字段,然后使用Request对象的FormCollection属性检索它。要发布到您的页面,您需要动态地创建一个然后提交它的表单,代码看起来像:

var link = AjaxLocation + "/createDataSet.aspx";
    $j.post(link, null, function() {

        $("<form action='/admin/SavedDataSet_edit.aspx'><input name='businessId' type='hidden' value='"+ data +"'></form>").appendTo('body').submit();


    }, "html");

答案 1 :(得分:0)

隐藏它的唯一方法是将其传递给SavedDataSet_edit.aspx,将其存储在会话中,然后让该页面在没有查询字符串的情况下重定向到自身。或者在两者之间使用不同的页面来保存会话。或者,您可以加密该值并传递加密的查询字符串,前提是数据是来自服务器的值。

确保即使您可以这样做,也要检查资源的权限,以确保用户已获得授权。

答案 2 :(得分:0)

window.location.replace不是POST请求,因此无法发送POST数据。所以你的选择是:

  1. 继续使用查询字符串路由并只显示值,但这听起来不是一个现实的选择
  2. 将查询字符串数据放入表单并按照pass post data with window.location.href的各种答案中的说明提交表单。
  3. 利用您已经对createDataSet.aspx进行的AJAX调用,并在SavedDataSet_edit.aspx页面上存储您想要检索的值,方法是将businessId数据存储在Session中在createDataSet.aspx中,当您在Session Page_Load时,在SaveDataSet_edit.aspx缓存中检索它。