检查是否使用POST获取了页面

时间:2011-02-01 09:18:08

标签: javascript sharepoint

有没有办法,使用javascript,检查页面是否是POST或GET请求的结果?

原因是我有一个sharepoint搜索页面,我们插入了自定义javascript以自动选择特定值。对于新搜索,这不是问题,但是当使用回发实现下一个/上一个结果页面时,如果值已更改,则值将重置,并且下一页将获得不同的结果。

示例:默认值为“选择”(=无值)。我们的脚本将其设置为“值1”。新用户转到搜索页面,将其更改为“值2”并进行搜索。当他得到结果时,我们的脚本将其设置回“值1”,当他点击“下一步”时,他获得第2页的结果,搜索“值1”而不是“值2”。

解决方案是检查页面是否是使用POST提交的,如果不是,则仅重置该值。

3 个答案:

答案 0 :(得分:4)

不,JavaScript无法检测到这样的事情。

可以做的是从背后的代码中向JS注入一些“标志”:

void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack)
    {
        Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "post_back_flag", "var _postBack = true;", true);
    }
}

然后在JS代码中检查该标志。

答案 1 :(得分:2)

您可以使用服务器端的Page.IsPostBack属性来避免在回发期间生成客户端脚本的重置部分:

protected void Page_PreRender(object sender, EventArgs e)
{
    if (!IsPostBack) {
        // Render the script that resets the selection to "Value 1".
    }

    // Render the rest of the script.
}

答案 2 :(得分:1)

我认为简单的答案是,如果是POST请求,则无法通过JavaScript访问变量。你能不检查查询字符串的URL,如果有,那么它是GET请求吗?