在ajax上更改iFrame src完成

时间:2011-04-12 11:49:12

标签: jquery ajax iframe

使用jQuery的$ .ajax()我想从服务器检索一些信息,然后根据该信息更改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属性OUTSIDE ajax调用正常,并显示在打开或保存PDF之间进行选择的对话框。

避免显示信息栏的任何变通方法? 提前谢谢。

3 个答案:

答案 0 :(得分:1)

如果您不想使用jQuery

,可以试试这个

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

试试这个机智jQuery

var iframe = $('#myframe');

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

要打开PDF,请尝试此

window.open(src);

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

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

我希望这可以帮助你;)

答案 2 :(得分:0)

避免iframe和信息栏的另一种方法是不能自动打开PDF。在调用AJAX回调中,创建PDF文件的常规链接,以便用户可以直接单击它。这应该可以防止IE标记下载。