2015-06-09 95 views
0

我必須從服務器端顯示fancybox。我寫了一個JavaScript方法,並呼籲在ScriptManager.RegisterStartUpScript在asp.net的按鈕,點擊方法Fancybox沒有從服務器端顯示

這裏是我的身後

protected void btnSaveAndAddConcern_Click(object sender, EventArgs e) 
    { 
     ScriptManager.RegisterStartupScript(this, this.GetType(), "fancybox", "callFancyBox();", true); 
    } 

代碼,這是我的javascript功能

function callFancyBox() { 
      $("#fancybox").attr("href", "/Agent/AddCampConcernPopup.aspx").fancybox({ 
        'width': 550, 
        'height': 200, 
        'type': 'iframe', 
        'title': '' 
       }).trigger("click"); 
      } 

功能被叫,但fancybox不會打開。當我從客戶端調用它時,此javascript功能正常工作。但是當我從代碼背後的代碼中調用它時,永遠不會顯示。我檢查在控制檯中的錯誤,它顯示了從服務器端調用後,這個錯誤

"Uncaught TypeError: Cannot read property 'hide' of undefined"

我有jQuery的1.10.2和的fancybox版本1.3.4

再次的fancybox工作完全當我把它叫做客戶端但問題是與服務器端調用。

+0

是'#fancybox'' runat =「server」'? – Mairaj

+0

沒有。 #fancybox是一個簡單的標記。像這樣

回答

2

這將是更好,如果你添加

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "ajax", "callFancyBox()", true); 

代替

ScriptManager.RegisterStartupScript(this, this.GetType(), "fancybox", "callFancyBox();", true); 

還加按類沒有ID,所以你可以通過一個函數很多如下所示

$(document).ready(function() { //this line you have to add for initiate script so it will solve your undefined error 
      $('.fancybox').fancybox({ 
       type: 'iframe'     
      }); 
} 
+0

這是從服務器端調用的JavaScript函數。我怎麼能把這個功能放在$(document).ready()中。 如果我把函數直接放在$(document).ready()中,它會在頁面加載時自動調用,但我需要通過按鈕從服務器端單擊來調用方法 –

+0

只需在函數callFancyBox()的$(document ).ready(function(){... ..它會解決你的問題.. – Shirish

+0

謝謝兄弟,它爲我工作。 –

1

使用ScriptManager.RegisterClientScriptBlock而不是ScriptManager.RegisterStartupScript

試試這個

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "fancybox", "callFancyBox();", true); 
+0

我厭倦了這段代碼。現在它顯示這個控制檯錯誤... 未捕獲ReferenceError:callFancyBox未定義 –

+0

你在哪裏定義了這個函數?把這個放在body標籤後面。 – Mairaj

+0

此頁面從母版頁繼承。功能寫在內容頁面的內容佔位符內,而內容佔位符寫在Master頁面的主體中。 –