2011-04-24 70 views
2

我使用__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?

+0

在附註中,您希望獲得此路線的任何特定原因。爲什麼不使用PageMethods(http://weblogs.asp.net/mschwarz/archive/2008/01/08/how-to-move-from-ajaxpro-to-asp-net-ajax-pagemethods.aspx)和相關的東西來自Jquery嗎? – 2011-04-25 08:43:22

+0

有沒有機會在頁面的URL中使用「alert」字符串? – jvanstry 2016-08-25 22:37:59

回答

1

放置在您的HTML文件的標題部分下面的腳本:

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

放下你的__doPostBack(「OtherInformation」)的第二個參數,並與更換空字符串,''。如果需要,可以將這些數據放在隱藏的輸入字段中,然後使用Request.Form進行檢索。

0

我也跟着你提到的相同的帖子,並得到一個錯誤,我試圖在這裏使用其他答案,但它仍然無法正常工作。

直到我找到了這個帖子: http://forums.asp.net/t/1197643.aspx (外觀由NC01取得第8回覆)。

1.basically的想法是,你的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.and在你的.cs中page_load加上這一行:

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

4.不要忘記執行th e接口:

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

並猜測它 - 甚至可以工作!

@Subhash堤防 - PageMethods僅適用於靜態方法AFAIK。

+0

雖然這可能會在理論上回答這個問題,[這將是更可取的](http://meta.stackexchange.com/q/8259)在這裏包括答案的重要部分,並提供供參考的鏈接。 – oers 2012-02-27 08:50:24

2

對我來說_dopostback()不是隻在IE和Chrome瀏覽器上觸發。我通過添加「返回false」來解決問題。在javascript函數中聲明。例如: -

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

現在它的工作正常。