如何在JavaScript中检查IsPostBack?

时间:2008-09-12 18:35:26

标签: asp.net javascript

我需要运行一个JavaScript函数onLoad(),但只有在第一次加载页面时才会这样做(即不是回发的结果)。

基本上,我需要在JavaScript中检查IsPostBack。

谢谢。

10 个答案:

答案 0 :(得分:67)

服务器端,写:

if(IsPostBack)
{
   // NOTE: the following uses an overload of RegisterClientScriptBlock() 
   // that will surround our string with the needed script tags 
   ClientScript.RegisterClientScriptBlock(GetType(), "IsPostBack", "var isPostBack = true;", true);
}

然后,在为onLoad运行的脚本中,检查该变量是否存在:

if(isPostBack) {
   // do your thing
}

你不需要设置变量,就像Jonathan的解决方案一样。客户端if语句将正常工作,因为“isPostBack”变量将是未定义的,在if语句中计算为false。

答案 1 :(得分:26)

有一种更简单的方法,不涉及在后面的代码中写任何东西:只需将此行添加到您的javascript:

if(<%=(Not Page.IsPostBack).ToString().ToLower()%>){//Your JavaScript goodies here}

if(<%=(Page.IsPostBack).ToString().ToLower()%>){//Your JavaScript goodies here}

答案 2 :(得分:12)

嗨试试以下......

function pageLoad (sender, args) {

alert (args._isPartialLoad);

}

结果是布尔

答案 3 :(得分:4)

解决方案对我不起作用,我不得不改编它:

protected void Page_Load(object sender, EventArgs e)
{
    string script;
    if (IsPostBack)
    {
        script = "var isPostBack = true;";
    }
    else
    {
        script = "var isPostBack = false;";
    }
    Page.ClientScript.RegisterStartupScript(GetType(), "IsPostBack", script, true);
}

希望这有帮助。

答案 4 :(得分:2)

您可以在页面上放置隐藏的输入,并在页面加载后为其赋值。然后你可以检查那个字段,如果它在帖子数据中,它是一个回发,否则它不是。

有两个解决方案使用服务器端代码(特定于ASP.NET)作为响应发布。我认为值得指出的是,该解决方案与技术无关,因为它仅使用客户端功能,可在所有主流浏览器中使用。

答案 5 :(得分:2)

试试这个,在这个JS中我们可以检查它是否回发,并相应地在相应的循环中进行操作。

    window.onload = isPostBack;

    function isPostBack() {

        if (!document.getElementById('clientSideIsPostBack')) {
            return false;
        }

        if (document.getElementById('clientSideIsPostBack').value == 'Y') {

            ***// DO ALL POST BACK RELATED WORK HERE***

            return true;
        }
        else {

            ***// DO ALL INITIAL LOAD RELATED WORK HERE***

            return false;
        }
    }

答案 6 :(得分:0)

您可以创建一个值为0的隐藏文本框。将onLoad()代码放入if块中,该块检查以确保隐藏文本框值为0.如果执行代码并将文本框值设置为1。

答案 7 :(得分:0)

这是一种方法(把它放在Page_Load中):

if (this.IsPostBack)
{
    Page.ClientScript.RegisterStartupScript(this.GetType(),"PostbackKey","<script type='text/javascript'>var isPostBack = true;</script>");
}

然后在JS中检查该变量。

答案 8 :(得分:0)

这里有很多选择。

对于纯JS解决方案,让您的页面提交给自己,但使用其他URL参数(mypage.html?postback = true) - 然后您可以使用window.location.href获取页面URL,并使用split或regex来查找变量。

更简单的一个,假设你发送回某种脚本语言来处理页面(php / perl / asp / cf et.al),就是让它们在页面中回显一行javascript来设置一个变量:

<html>

<?php
if ($_POST['myVar']) {
    //postback
    echo '<script>var postingBack = true;</script>';
    //Do other processing
} else {
    echo '<script>var postingBack = false;</script>'
 } ?>
<script>
function myLoader() {
     if (postingBack == false) {
          //Do stuff
     }
 }

<body onLoad="myLoader():"> ...

答案 9 :(得分:-2)

在中创建一个全局变量并应用值

<script>
       var isPostBack = <%=Convert.ToString(Page.IsPostBack).ToLower()%>;
</script>

然后你可以从其他地方引用它