2012-04-17 72 views
1

我需要從ajax方法背後的c#代碼調用javascript函數(CommentButtonShow())。我無法做到這一點。AJAX:如何從AJAX方法後面的C#代碼調用JavaScript函數

以下是C#的AJAX方法,

[AjaxMethod(HttpSessionStateRequirement.ReadWrite)] 
public string CheckPassword() 
{ 
    ScriptManager.RegisterClientScriptBlock(this, GetType(), "ScriptManager1", "javascript:CommentButtonShow();", true); 
} 

下面是JavaScript函數,

function CommentButtonShow() { 
     $("#ctl00_mainContentPlaceHolder_divEmailFriends").removeClass('hidden').addClass('show'); 
    } 

請幫助我。

謝謝。

+2

問題是什麼? – 2012-04-17 08:22:22

+0

我需要從ajax方法背後的c#代碼調用javascript函數(CommentButtonShow())。我無法做到這一點。 CommentButtonShow方法沒有被觸發 – user735647 2012-04-17 08:25:05

+0

你看過你的javascript調試工具控制檯嗎?你看看是否正在發送AJAX請求(在你的javascript調試工具中)?請求的樣子是怎樣的?服務器響應什麼? – 2012-04-17 08:25:41

回答

1

你可以在javascript裏面調用CommentButtonShow()函數在ajax調用成功事件中。你不能在web方法中調用javascript函數。如果它是回發你的代碼將工作,但對於Ajax回調它不會工作。

+0

謝謝chamika。有沒有其他方法可以從Ajax方法後面的代碼調用JS方法? – user735647 2012-04-17 08:33:36

+0

如果您使用ajax調用它,那麼在web方法中調用javascript函數的目的是什麼 – 2012-04-17 09:01:21

0

我回答這個問題,以做一些有趣的工作給他們:)時流下更多的光線對於那些誰是新的這個cilent端和服務器端腳本和混合起來

這是絕對不可能的調用C#(服務器端)代碼中的Javascript(客戶端)功能。我的意思是,即使你真的不能在地球上的任何編程語言中調用javascript回到服務器端代碼!

這很簡單。服務器端代碼呈現客戶端代碼。由於客戶端代碼(html/javascript)駐留在瀏覽器中,因此您至少不需要在服務器端獲取任何鉤子,然後調用它。但是,對於Asp.Net爲您提供了一個鉤子,它實際上將客戶端HTML控件(大多數HTML標記)轉換爲服務器端控件(如.net框架支持的),然後您可以訪問它們的屬性和一些只在服務器上調用的方法-側。這並不意味着你有JavaScript事件或類似的事情。無論你用服務器端控件HAPPEN做什麼,只需要在服務器端完成,並且在THAT控件的最終代碼發送給瀏覽器進行呈現之前,所有這些控件都已經完成。這就是爲什麼當這樣的控件的html呈現時,你會看到一個典型的基於.net的ID生成,看起來像_ctr01等。

無論如何,使用Ajax(在客戶端),仍然可以使用Ajax.Net和/或Ajaxpro(ajaxpro.info)或自定義javascript lib(jquery)調用服務器端方法。

我希望這隻會幫助理解你在做什麼實際上是不可能的。我仍然不會評價你的問題,因爲它真的會幫助許多新來的人瞭解事情是如何運作的,以及經歷過這些事情的人是如何做到的。

我希望它非常公平地使用這個論壇來提供幫助每個人而不是讓他們知道他們要問/回答問題的信息,而不是讓他們知道他們問/答是對/錯。

非常感謝。

0

我們可以從JQuery AJAX調用中調用codebehind方法,並根據狀態判斷是錯誤還是成功執行相應的方法。

function MyMethod() { 
    $.ajax({ 
    type: "POST", 
    url: "CodeBehind.aspx/ClearData", 
    contentType: "application/json;charset=utf-8", 
    data: '', 
    dataType: "json", 
    success: function (data, textStatus) { 
     closePopUpwindow1(); 
    }, 
    error: function (data, textStatus) { 
     closePopUpwindow2(); 
    } 
});} 

    [WebMethod] 
    public static void ClearData(){ 
Page.SetGridSessionData(gridID, null); 
} 

如果服務器端方法成功執行,則執行closePopUpwindow1方法,否則將執行closePopUpwindow2方法。

相關問題