Заменить iFrame src на ajax - PullRequest
       3

Заменить iFrame src на ajax

3 голосов
/ 12 апреля 2011

используя jQuery $ .ajax (). Я хочу получить некоторую информацию с сервера, а затем, основываясь на этой информации, изменить атрибут src в iframe.

Что-то вроде:

$.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 заблокировал этот сайт от загрузки файлов на ваш компьютер. Нажмите здесь для выбора параметров».

При изменении атрибута src iframe ВНЕ, ajax-вызов работает нормально, и отображается диалоговое окно выбора между открытием или сохранением PDF-файла.

Какие-нибудь обходные пути, чтобы избежать показа информационной панели? Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 12 апреля 2011

Вы можете попробовать это, если не хотите использовать jQuery

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

попробуйте это с JQuery

var iframe = $('#myframe');

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

Чтобы открыть PDF, попробуйте

window.open(src);

откроет PDF-файл в новом окне ... но нельзя избежать информационной панели ....

0 голосов
/ 12 апреля 2011

Альтернативный подход, который позволяет избежать как iframe, так и информационной панели, состоит в том, чтобы просто не открывать PDF автоматически. В обратном вызове AJAX для вызова создайте обычную ссылку на файл PDF, чтобы пользователь мог непосредственно щелкнуть по нему. Это должно помешать IE пометить загрузку.

0 голосов
/ 12 апреля 2011

Я не уверен, что это сработает, но вы можете попробовать это:

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);
                }
            }
        }
);

Надеюсь, это поможет вам;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...