1

我有以下 javascript :

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

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

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

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

谢谢..

4

3 回答 3

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");
于 2013-09-06T15:05:15.620 回答
0

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

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

于 2013-09-06T15:03:02.283 回答
0

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

  1. 继续使用查询字符串路由,只使用显示的值,听起来这不是一个现实的选择
  2. 将查询字符串数据放入表单并按照各种答案中的说明提交表单,以使用 window.location.href 传递发布数据
  3. 利用您已经进行的 AJAX 调用,并通过将数据存储在页面中来存储createDataSet.aspx您想要在页面上检索的值,然后在您位于页面时从缓存中检索它。SavedDataSet_edit.aspxbusinessIdSessioncreateDataSet.aspxSessionPage_LoadSaveDataSet_edit.aspx
于 2013-09-06T15:03:39.550 回答