2011-04-12 75 views
3

我想从服务器检索一些信息,然后根据该信息更改iframe的src属性。

喜欢的东西:

$.ajax(
       { 
        url: "someUrl.aspx/getInfo", 
        dataType: "json", 
        data: "{'data':{'data1':'data1'}}", 
        type: "post", 
        contentType: "application/json; charset=utf-8", 
        complete: function(data, stat) { 
         if (stat == "success") 
         { 
          var src = JSON.parse(jsondata.responseText).d.src 
          $('#myframe').attr("src",src); 
         } 

        } 
       } 
       ); 

我试图加载返回一个PDF文件,因此我们的目标是向用户显示的对话框下载或打开这个文件之间进行选择的页面。在IE7和8上,浏览器显示信息栏并显示以下消息:“为了帮助保护您的安全,Internet Explorer阻止此网站将文件下载到您的计算机,请点击此处查看选项。”

更改iframe的src属性在ajax调用之外工作正常,并显示打开或保存PDF时进行选择的对话框。

任何避免信息栏显示的变通办法? 在此先感谢。

+0

有没有什么方法可以使用iframe之外的其他方法?你真的应该避免它们。发布你的html。 – Calum 2011-04-12 11:55:25

+0

无法找出任何其他方式,我试图调用的“src”返回pdf,它位于另一台服务器中。 – mentxugle 2011-04-12 12:43:41

回答

0

避免在iframe和另一种方法信息栏是简单地不自动打开PDF。在调用AJAX回调函数中,创建一个定期链接到PDF文件,以便用户可以直接点击它。这应该阻止IE标记下载。

+0

谢谢。我在AJAX回调中动态地改变了链接的href,并使链接看起来像一个“打印”按钮(通过jQuery UI)。 – mentxugle 2011-04-14 05:54:08

+0

@mentxugle你可以详细阐述一下你如何用示例代码实现这一点。 – idsTech 2013-07-10 10:09:43

1

你可以试试这个,如果你不想使用jQuery

document.getElementById("myframe").src=src;

试试这个机智的jQuery

var iframe = $('#myframe'); 

$(iframe).attr('src', src) 

为了打开PDF试试这个

window.open(src); 

将在新窗口中打开pdf ...但信息栏无法避免。 ...

+0

完成后打开一个新窗口使IE7打开并关闭它。 – mentxugle 2011-04-12 12:38:26

0

我不知道这是否会工作,但你可以试试这个:

var alterIframe = function(src){ 
    $('#myframe').attr("src",src); 
}; 

$.ajax(
     { 
      url: "someUrl.aspx/getInfo", 
      dataType: "json", 
      data: "{'data':{'data1':'data1'}}", 
      type: "post", 
      contentType: "application/json; charset=utf-8", 
      complete: function(data, stat) { 
       if (stat == "success") { 
        data = $.parseJSON(data); 
        setTimeout('alterIframe("' + data.src + '")',300); 
       } 
      } 
     } 
); 

我希望这可以帮助你;)

+0

谢谢,但仍然有相同的行为:显示信息栏的IE7。 – mentxugle 2011-04-12 12:40:02