2016-05-19 3 views
0

У меня есть страница, где я хотел бы, чтобы форма была заполнена, файл javascript проверяет информацию, отправляет информацию в php-файл, чтобы отправить ее мне, а затем инициирует загрузку. Проблема в том, что у меня может быть файл javascript либо отправить почту, либо разрешить загрузку файла, но не оба.Javascript запустите файл php, а затем загрузите файл

Код в вопросе выглядит следующим образом:

else { 
document.dlform7.action = "http://www.myurl.com/c/post7.php" ; 
document.dlform7.submit(); 
window.location.assign(url); 
} 

Есть ли способ (возможно, с использованием нагрузки), что я могу иметь оба эти действия происходят одновременно?

редактировать опция:

Аякса:

else { 
$.ajax({ 
    url: "http://www.myurl.com/c/post7.php"; 
    type: "POST", 
    data: data,  
    cache: false, 
    success: function() {    
     window.location.assign(url); 
     document.dlform7.submit();     

     }, 
+3

Отправить форму в php-скрипт, который сначала [отправляет письмо] (http://stackoverflow.com/questions/5335273/how-to-send-an-email-using-php), а затем [загружает file] (http://stackoverflow.com/questions/7263923/how-to-force-file-download-with-php) – adeneo

ответ

2

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

Вам понадобится создать обработчик событий отправки для формы, которая сделает вызов ajax для вашего php-скрипта. Затем верните значение false, чтобы предотвратить перезагрузку страницы. Затем вы сможете одновременно загрузить файл.

UPDATE

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

else { 
$.ajax({ 
    url: "http://www.myurl.com/c/post7.php"; 
    type: "POST", 
    data: $(document.dlform7).serialize(),  
    cache: false, 
    }); 
    window.location.assign(url); 

Метод Аякса является представление формы , Он не нарушает поток вашего кода, поэтому перенаправление произойдет после запроса. (Я уверен, что это сработает).

Если вы хотите ждать, пока PHP скрипт успешно не работает, то вы бы переместить код в обратный вызов следующим образом:

else { 
$.ajax({ 
    url: "http://www.myurl.com/c/post7.php", 
    type: "POST", 
    data: $(document.dlform7).serialize(),  
    cache: false, 
    success: function() { window.location.assign(url); } 
    }); 

Конечно, вы также можете просто изменить страницу PHP, чтобы отправить по электронной почте а затем ответьте файлом, который вы хотите скачать, как упоминание в комментариях.

+0

Я отправляю с использованием onClick = "return checkValuesControl (true);" – Patrick

+0

Из фрагмента кода, который вы опубликовали, строка 'document.dlform7.submit();' вызывает перезагрузку страницы, что приводит к тому, что код не переходит к следующей строке. Измените эту строку так, чтобы она вызывала асинхронный submit (сделать аякс-вызов). И вы должны быть в состоянии делать все, что вы ищете. – Schleis

+0

Итак, я бы поставил загрузку файла в функцию успеха вызова ajax? – Patrick

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