有没有办法,使用javascript,检查页面是否是POST或GET请求的结果?
原因是我有一个sharepoint搜索页面,我们插入了自定义javascript以自动选择特定值。对于新搜索,这不是问题,但是当使用回发实现下一个/上一个结果页面时,如果值已更改,则值将重置,并且下一页将获得不同的结果。
示例:默认值为“选择”(=无值)。我们的脚本将其设置为“值1”。新用户转到搜索页面,将其更改为“值2”并进行搜索。当他得到结果时,我们的脚本将其设置回“值1”,当他点击“下一步”时,他获得第2页的结果,搜索“值1”而不是“值2”。
解决方案是检查页面是否是使用POST提交的,如果不是,则仅重置该值。
答案 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请求吗?