__doPostBack不适合我

时间:2011-04-24 12:58:32

标签: javascript asp.net dopostback

我使用__doPostBack的方式是否有错误?

function displaymessage() {
  var scl = "aaaaaa";
  var pageId = '<%=  Page.ClientID %>';
  __doPostBack(pageId, 'OtherInformation');
  alert(scl);
}

<input type="button" value="Click me!" id="Button2" onclick="displaymessage()"   />

当我按下按钮时,它应该在代码文件中调用RaisePostBackEvent,但它不会。如果我评论doPostBack它会到达警报但是当它被取消注释它没有。所以在使用doPostBack时一定是个错误。

我关注了这篇文章:Call ASP.NET function from JavaScript?

5 个答案:

答案 0 :(得分:2)

对我来说_dopostback()不仅仅在IE和Chrome浏览器上启动。我已经解决了添加&#34; return false;&#34; javascript函数中的语句。例如: -

  function test()
{
    _dopostback("logout","");
return false;
}

现在工作正常。

答案 1 :(得分:1)

将以下脚本放在html文件的标题部分:

<script>
    function __doPostBack(eventTarget, eventArgument) {
        document.Form1.__EVENTTARGET.value = eventTarget;
        document.Form1.__EVENTARGUMENT.value = eventArgument;
        document.Form1.submit();
    }
</script>

答案 2 :(得分:0)

删除__doPostBack('OtherInformation')的第二个参数,并替换为空字符串''。如果需要,可以将数据放在隐藏的输入字段中,并使用Request.Form检索它。

答案 3 :(得分:0)

我也按照你提到的同一个帖子发现错误,我试图在这里使用其他答案,但它仍然没有用。

直到我找到这篇文章: http://forums.asp.net/t/1197643.aspx (参见NC01的第8次回复)。

1.基本上我的想法是你的aspx应该有这样的东西:

<script type="text/javascript" language="javascript">
  function myfunction() {

              if ('<%=Page.IsPostBack%>' == 'False') {
                 var pageId = '<%= this.UniqueID %>';
                  __doPostBack(pageId, 'do_something_good');
              }
          }
</script>

2.然后在您的.cs中添加接口IPostBackEventHandler(例如:)

public partial class _default : System.Web.UI.Page, IPostBackEventHandler

3.在.c in page_load中添加以下行:

this.ClientScript.GetPostBackEventReference(this, string.Empty);

4.不要忘记实现界面:

public void RaisePostBackEvent(string eventArgument)
  {
   if (eventArgument == "do_something_good")
   {
    //bla
   }
  }

猜猜是什么 - 它甚至有效!

@Subhash Dike - PageMethods仅适用于静态方法,AFAIK。

答案 4 :(得分:0)

将您的代码更改为此:

setTimeout(function () { __doPostBack('btnSave', '') }, 500);

使用btnSave Id。它将在所有浏览器中运行。