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

Javascript 检查是否使用POST获取页面,javascript,sharepoint,Javascript,Sharepoint,有没有办法使用javascript检查页面是否是POST或GET请求的结果 原因是我有一个sharepoint搜索页面,其中插入了一个自定义javascript以自动选择特定值。对于新搜索,这不是问题,但由于下一个/上一个结果页是使用回发实现的,因此如果值发生更改,则会重置该值,并且下一个结果页会得到不同的结果 示例:默认值为“选择”(=无值)。我们的脚本将其设置为“值1”。新用户进入搜索页面,将其更改为“值2”并进行搜索。当他返回结果时,我们的脚本将其设置回“值1”,当他单击“下一步”时,他将

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

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

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


解决方案是检查页面是否使用POST提交,如果没有,则只重置值。

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

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

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.
}

不,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代码中检查该标志。

更好的解决方案不是只设置当前未设置的值吗?或者,更好的方法是,首先使用正确的预选值创建HTML,而不让任何JavaScript触及设置?我必须创建一个Web部件来插入JavaScript,但事实证明这是最简单的解决方案:)