2016-09-15 4 views
0

(私の英語のない私の母国語のため申し訳ありません)アヤックス/ PHPは、フォームのリダイレクトを提出したがsend.php

簡単な質問を実行、 iは(ファイルを含む)形式のデータを扱うためのPHPファイルを実行することができますが、私のsend.phpファイルからの応答を待たずにユーザーをリダイレクトしますか?

多くのファイルが私のPHPプロセスにアップロードされています。これは完了するまでに多くの時間がかかることを意味します。ユーザーがそれを待つことを望んでいません...

私はajaxを使って、phpを実行するsend.phpにリダイレクトしないようにしますが、 "success"関数が呼び出されるまで待っていますファイルのアップロードとPHPが終了しました。これは、ユーザーが永遠に待っていることを意味します...成功関数の前にリダイレクトすると、PHPは終了しません。

私が望むのは、ユーザーが送信をクリックし、send.phpをバックグラウンドで起動し、send.phpファイルからの応答を待たずに別のページにリダイレクトすることです。

私のPHPで私はエラーをチェックし、それを処理するので、ユーザーはエラーを知る必要はありません。

(ところで、すべてがproccesに満足だけではない働いている)

私のAjax:

$(document).on('submit', '#myForm', function(e) { 
       e.preventDefault(); 
       $.ajax({    
        url: $('#myForm').prop('action'), 
        type: $(this).attr('method'), 
        data: new FormData($('#myForm')[0]), 
        contentType: false, 
        processData: false, 
        success: function(data) { 
         alert('Form submitted'); 
         window.location = "http://www.somesite.com/"; 
        }, 
        error: function() { 
         // The request failed - So something here 
         alert('Form NOT submitted'); //display an alert whether the form is 
         console.log('form not submited ERROR'); 
        } 
       }); 
      }); 

答えて

0

ファイルがアップロードされるまで、あなたは待つ必要があります。 アップロードが完了したら、たとえばアップロードを操作する必要がある場合など、バックグラウンドのプロセス(スレッド)を開始できます。 しかし、PHPではスレッド処理ができません。あなたのコメントのために

+0

thnxリダイレクトする方法がないので、応答を待たずにPHPをexecしてください。 –

+0

バックグラウンドプロセスを実行することができます。例:[link](https://nsaunders.wordpress.com/2007/01/12/running-a-background-process-in-php/) ファイルをアップロードする場合ファイルがサーバーにアップロードされるまで待つ必要があります。なぜなら、アップロードが完了する前にリダイレクトするとアップロードが中断されるからです。 – ghovat

+0

もう一度@ghovat –

関連する問題