2012-04-15 2 views
3
$.ajax({ 
        type: "POST", 
        url: "processform.php", 
        dataType: "json", 
        data: {name: name, email: email, city: city, country: country, day: day, month: month, year: year} 
        }).done(function(msg){ 

         if(msg.success == 1){ 
          $("#success_msg").append('<p>'+msg.message+'</p>'); 
          window.location.href = './music/song.mp3'; 
         } 

        }); 

Код выше просто загружает новую страницу с помощью музыкального проигрывателя. Я хочу, чтобы он загружался как файл.Начать загрузку файла после завершения ajax-звонка

ответ

3

Вы можете сделать это с помощью PHP, создать PHP файл с правильными заголовками и чем перенаправить на эту страницу, это заставит браузер, чтобы загрузить файл.

<?php 
header('Content-disposition: attachment; filename=song.mp3'); 
header('Content-type: audio/mpeg3'); 
readfile('song.mp3'); 
?> 
+0

http_send_file из pecl_http действительно полезен - включает запросы диапазона и http_match_etag для автоматического 304 (не модифицированных) ответов. http://php.net/manual/en/function.http-send-file.php и http://php.net/manual/en/function.http-match-etag.php – Olli

0

Это зависит от браузера. Если в вашем браузере есть медиа-плагин, он может открывать мультимедийные файлы непосредственно в браузере, а не предлагать диалоговое окно загрузки.

3

попробовать сделать так:

header("Content-Disposition: attachment; filename=somefile.mp3;"); 
+0

Конечно, это предполагает PHP-скрипт на стороне сервера. – Olli

+0

yes im using php – Adam

+0

где бы я положил этот код? В моем processform.php? – Adam

1

Если вы отказываетесь автоматизировать загрузку после вызова Ajax, Вы можете сделать это. Браузеры будут обрабатывать эту ситуацию по-своему.

$.ajax({ 
       type: "POST", 
       url: "processform.php", 
       dataType: "json", 
       data: {name: name, email: email, city: city, country: country, day: day, month: month, year: year} 
       }).done(function(msg){ 

        if(msg.success == 1){ 
         $("#success_msg").append('<p>'+msg.message+'</p>'); 
         // window.location.href = './music/song.mp3'; 
         $('<a/>', {target:'_blank', href:'./music/song.mp3'}).appendTo($("#success_msg")).html('Click To Download <Filename>'); 
        } 

       }); 
Смежные вопросы