通过Post方式从A页面跳转到B页面并在B页面接收参数

做的一个功能是在A页面导入excel文件,导入成功后跳转到B页面,并在B页面显示导入的数据

A页面:

     var url ="AInfo.aspx";
     var params = { "参数名称": response.d};
     Post1(url, params);

    function Post1(url, params) {
    // 创建form元素
    var temp_form = document.createElement("form");
    // 设置form属性
    temp_form.action = url;
    temp_form.target = "_self";
    temp_form.method = "post";
    temp_form.style.display = "none";
    // 处理需要传递的参数
    for (var x in params) {
        var opt = document.createElement("textarea");
        opt.name = x;
        opt.value = params[x];
        temp_form.appendChild(opt);
    }
    document.body.appendChild(temp_form);
    // 提交表单
    temp_form.submit();
}

B页面接收参数:

 'POST方式已经给加密了,需解密 
 Protected Overrides Sub PageLoad()
  Dim sParam As String = GetPostParam()
  If sParam IsNot Nothing OrElse Not String.IsNullOrWhiteSpace(sParam) Then
   ViewState("AAAA") = Server.UrlDecode(sParam)
  End If
 End Sub
 
Private Function GetPostParam() As String
 Dim sParam As String = ""
 Dim byts As Byte() = New Byte(HttpContext.Current.Request.InputStream.Length - 1) {}
 If byts.Length > 0 Then
   HttpContext.Current.Request.InputStream.Read(byts, 0, byts.Length)
   Dim sReq As String = System.Text.Encoding.[Default].GetString(byts)
   sParam = sReq.Split("=")(1)
 End If
 Return sParam
End Function

VB与C#代码互转:https://converter.telerik.com/

如果是GET方式,参数过长,需要在web.config设置


  <system.web>
    <customErrors mode="Off"/>
    <httpRuntime maxRequestLength="20480" requestValidationMode="2.0" maxQueryStringLength="102400" />
  </system.web>
  
  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxQueryString="102400"/>
      </requestFiltering>
    </security>
  </system.webServer>

调用:这个另起窗口打开,上面是在本页面打开
var params = { "addressee": receivers, "subject": Subject, "body": Body};
OpenPostWindow("../EmailInfo.aspx", params, "EmailShow")
方法:
  function OpenPostWindow(url, params, name) { 
            var tempForm = $("<form>");
            tempForm.attr("id", "tempForm1");
            tempForm.attr("style", "display:none");
            tempForm.attr("target", name);
            tempForm.attr("method", "post");
            tempForm.attr("action", url);
            for (var x in params) {
                var opt = document.createElement("input");
                opt.name = x;
                opt.value = params[x];
                tempForm.append(opt);
            }
            tempForm.on("submit", function () { openWindow(name); });
            tempForm.trigger("submit");
            $("body").append(tempForm);
            tempForm.submit();
            $("tempForm1").remove();
        };

        function openWindow(name) {
            window.open('about:blank', name);
        };
后台:
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim sParam As String() = GetPostParam()
        If sParam IsNot Nothing Then
            lblAddressee.Text = sParam(0).Substring(sParam(0).IndexOf("=") + 1)
            lblSubject.Text = sParam(1).Substring(sParam(1).IndexOf("=") + 1)
            lblHTMLBody.Text = sParam(2).Substring(sParam(2).IndexOf("=") + 1)
        End If

    End Sub
    Private Function GetPostParam() As String()
        Dim sParam As String() = Nothing
        Dim byts As Byte() = New Byte(HttpContext.Current.Request.InputStream.Length - 1) {}
        If byts.Length > 0 Then
            HttpContext.Current.Request.InputStream.Read(byts, 0, byts.Length)
            Dim sReq As String = Server.UrlDecode(Encoding.[Default].GetString(byts))
            sParam = sReq.Split("&")
        End If
        Return sParam
    End Function
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在JavaScript中,我们可以使用POST方法来传递参数并跳转到新页面。以下是一种实现方式: 首先,在原始页面中,我们可以创建一个form元素,并将其method属性设置为POST,将action属性设置为新页面的URL: ```html <form id="myForm" method="post" action="newpage.html"> <!-- 输入要传递的参数 --> <input type="text" name="param1" value="value1"> <input type="text" name="param2" value="value2"> <!-- 添加一个提交按钮 --> <input type="submit" value="提交"> </form> ``` 然后,在JavaScript中,我们可以通过编写一个函数来监听form的提交事件,并在事件发生时阻止默认的表单提交行为: ```javascript document.getElementById("myForm").addEventListener("submit", function(event) { event.preventDefault(); // 阻止默认的表单提交行为 // 获取表单元素和值 var form = document.getElementById("myForm"); var param1 = form.elements["param1"].value; var param2 = form.elements["param2"].value; // 创建一个新的FormData对象 var formData = new FormData(); // 将参数添加到FormData对象中 formData.append("param1", param1); formData.append("param2", param2); // 使用XMLHttpRequest对象发送POST请求 var xhr = new XMLHttpRequest(); xhr.open("POST", form.action, true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { // 请求成功后跳转到新页面 window.location.href = xhr.responseText; } }; xhr.send(formData); }); ``` 最后,在新页面(newpage.html)中,我们可以通过获取URL参数获取传递过来的数值。 以上是一个简单的使用POST方法传递参数并跳转到新页面的实现方法。当点击表单中的提交按钮时,JavaScript会阻止默认的表单提交行为,然后通过XMLHttpRequest对象发送POST请求,并在请求成功后跳转到新页面。在新页面中,我们可以获取传递过来的参数并进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值