使用Post Fails将数据发送到网页

时间:2015-10-12 16:43:47

标签: javascript asp.net http post cookies

我正在尝试使用javascript函数发送一个guid数组作为postdata。接收的aspx页面需要处理这些数据。

调用该页面的javascript如下:

function(webadress, guidarray) {
    var params = 'menubar=no,status=no,toolbar=no,resizable=no, scrollbars=no';
    var win = document.createElement("form");

    win.target = 'Map';
    win.method = 'POST';
    win.action = webadress;
    var winInput = document.createElement('input');
    winInput.type = 'text';
    winInput.name = 'guidcollection';
    winInput.value = guidarray;
    win.appendChild(winInput);
    win.setAttribute("target", "_blank");   
    window.open(webadress, '', params);
    win.submit();
}

aspx页面尝试读取帖子数据如下:

protected void Page_Load(object sender, EventArgs e)
{ 
    object PostGuids = HttpContext.Current.Request.Form["guidcollection"];
    // Do something with PostGuids
}

不知怎的,它失败了,当我调试aspx页面时,我发现没有定义 HttpContext 。使用fiddler我可以确定没有设置sessionId。我看到消息“此请求未发送任何cookie数据”。在Cookies选项卡中。

我该怎么做才能收到帖子数据?该网站的要求之一是不允许客户端上的cookie数据。是否可以在没有sessionId的情况下接收Post数据?或者我应该寻找像ViewState这样的替代品吗?使用查询字符串将不起作用,因为数据的长度将超过查询字符串的2048字符限制。

1 个答案:

答案 0 :(得分:0)

我设法通过以下更改来实现此目的:

function(webadress, guidarray) {
    var params = 'menubar=no,status=no,toolbar=no,resizable=no, scrollbars=no';
    var win = document.createElement("form");

    win.target = 'Map';
    win.method = 'POST';
    win.action = webadress;
    var winInput = document.createElement('input');
    winInput.type = 'text';
    winInput.name = 'guidcollection';
    winInput.value = guidarray;
    win.appendChild(winInput);
    document.body.appendChild(win);
    window.open(webadress, 'Map', params);

    win.submit();
}

和服务器端:

protected void Page_Load(object sender, EventArgs e)
{ 
    if (this.Request.Form.HasKeys())
    {
        object PostGuids =  this.Request.Form["guidcollection"];
        // Do something with PostGuids
    }
}

我仍然不知道为什么 HttpContext 仍未定义,但这样我可以正确访问guid数据。如果有人可以向我解释,我很乐意接受这个作为答案。