服务器端调用未显示Fancybox

时间:2015-06-09 03:29:18

标签: javascript c# jquery asp.net fancybox

我必须从服务器端显示fancybox。我编写了一个javascript方法,并在asp.net中的ScriptManager.RegisterStartUpScript中调用该方法按钮单击

这是我背后的代码

 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函数工作正常。但是,当我从fancybox后面的代码调用它时,从未显示过。我检查控制台中的错误,并在从服务器端调用后显示此错误

  

“未捕获的TypeError:无法读取未定义的属性'hide'”

我有jquery 1.10.2和fancybox版本1.3.4

同样,当我从客户端调用它时,fancybox工作正常,但问题是服务器端调用。

2 个答案:

答案 0 :(得分: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'                   
            });
 }

答案 1 :(得分:1)

使用ScriptManager.RegisterClientScriptBlock代替ScriptManager.RegisterStartupScript

试试这个

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