为什么Web处理程序在jquery对话框中调用两次?

时间:2013-05-16 10:45:23

标签: javascript jquery asp.net

我正在开发一个asp.net网络应用程序,其中我在jquery对话框中显示pdf,pdf在iframe中。我的代码是

  if (int.Parse(Request.QueryString["option"].ToString()) == 0)
    {
        showPDF(DocumentId, perId);
        mediaRep.MediaViewLog(memberId, DocumentId);
        litScript.Text = "<script>$(function(){$( '#dialog' ).dialog( 'destroy');$(\"#showPdf\").dialog({height: \"auto\",width:\"auto\",modal: true ,buttons:{OK: function () {$(this).dialog(\"close\");window.location=\"PdfSearch.aspx\"}},close:function(){closeDialogPer(\"" + perId + "\");window.location=\"PdfSSearch.aspx\"}});});</script>";
    }

  publicvoid showPDF(Guid DocumentId, int perId)
    {
        litObj.Text = "<iframe  type=\"application/pdf\" class=\"noprint pdfPreviewSettings\" src=\"/Search/GetPdfFile.ashx?MediaId=" + DocumentId + "&FileType=Document" + "&PerId=" + perId +
                                            "\" onclick=\"disableRightClick();\"  width=\"1150\" height=\"750\" ><strong class=\"pdfError \">Please contact your system administrator for installation of adobe acrobat reader.</strong></iframe>";
    }

问题是当pdf在对话框中显示时,iframe中的web处理程序正在调用两次而没有对话框处理程序正在调用一次。通过使用jquery对话框调用处理程序变为double的原因是什么,以及如何修复它。

1 个答案:

答案 0 :(得分:1)

dialog调用2次请求的原因是iframe已在页面上且已加载一次,但dialog调用会从其当前父元素中删除iframe,然后将其附加到某些其他元素(如页面上的div中心),这会导致iframe重新加载其内容,您无法避免此问题。

解决方法是不在html标记中设置iframe src,然后在iframe上调用对话框函数,然后将iframe src设置为url。

$("#showPdf").dialog(...);
$("#showPdf").attr("src","<here goes the url to be loaded>");