2011-07-14 2 views
2

Я вызываю jQuery «GET» в файле test.php ниже.Форсирование диалога «Сохранить как» через jQuery GET

Я пытаюсь заставить скрипт поместить диалог «Сохранить как» в результирующий файл test.ini, чтобы он мог быть сохранен локально. Однако, хотя я могу повторить результат обратно в jQuery fine, я, похоже, не могу открыть диалог «Сохранить как».

Обновление: Благодаря решениям, приведенным ниже, я просто изменил свой $ .get на window.location.replace.

$('#test').click(
    function() 
    { 
     //$.get('<?php echo get_bloginfo('template_directory') ?>/test.php'); 
     window.location.replace("<?php echo get_bloginfo('template_directory') ?>/test.php"); 

    } 
); 
+1

Я считаю, что запрос AJAX никогда не отображает диалог «Сохранить как». Почему бы просто не перейти к этой странице вместо запроса AJAX? – pimvdb

ответ

8

Вы не можете получить запрос ajax, чтобы отобразить диалог «Сохранить как», но то, что вы можете сделать, это вставить скрытый элемент iframe на странице, а затем установить источник этого iframe на URL-адрес, который вы хотите использовать Скачать. Вуала, есть твоя «Сохранить как».

Вот копия и паста пример:

$('a#linky').click(function(){ 
    var iframe = document.createElement("iframe"); 
    iframe.src = 'http://example.com/branding.zip'; 
    iframe.style.display = "none"; 
    document.body.appendChild(iframe); 
    return false; 
}); 
+0

Если это действительно работает, это крутая идея. – Nicole

+0

+1 для копирования/вставки. Я закончил тем, что просто изменил свой $ .get на window.location.replace, но я могу сделать это позже. –

+0

не работает для меня, мое pdf-шоу на iframe, но диалог «сохранить как» никогда не появляется :(.. Просто тестирование с использованием google chrome ... – ncubica

1

Запрос AJAX не может вызвать диалог загрузки файла. Вместо этого рассмотрите возможность открытия цели загрузки в новом окне.

3

Вам не нужен AJAX для этого. Просто перейдите к PHP в вопросе и в том, что PHP использование

header('Content-disposition: attachment;filename=whatever.dat'); 

Это будет всплывающее «сохранить как» диалоговое окно, и вы будете оставаться на исходной странице.

+0

Работает, если ошибки PHP не возникают, и в этом случае он перейдет к новому URL-адресу и распечатает ошибку для пользователя. По этой причине я предпочитаю использовать новый фрейм (или, как предлагает Джимми, iFrame.) –

+0

Ну, естественно, если вы получите ошибки в системе, то поведение будет не таким, как вы ожидаете. Если вы используете метод iframe, предложенный Jimmy и ваши ошибки php, с точки зрения пользователя ничего не произойдет вообще. То есть пользователь нажимает кнопку/ссылку/etc - и ничего не происходит - также не лучший пользовательский интерфейс. –

+0

Разве вы просто не любите ниспадающих слов без комментариев - через пять лет после ответа! –

Смежные вопросы