2016-09-15 79 views
0

(对不起,我的英语它不是我的母语)AJAX/PHP提交表单重定向,但执行send.php

简单的问题, 我可以执行PHP文件来处理表格数据(包括文件),但重定向用户而无需等待我的send.php文件的响应?

在我的php程序中有很多文件上传,这意味着很多等待时间才能完成。我不希望用户等待那么久...

此刻我使用ajax来防止用户重定向到send.php,这使得php执行,但用户仍然在等待,直到“成功”函数调用后文件上传和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而不等待响应? –

+0

您可以运行后台进程,例如:[link](https://nsaunders.wordpress.com/2007/01/12/running-a-background-process-in-php/) 但是,如果您正在上传文件你必须等到文件上传到服务器,因为如果你在上传完成之前重定向,上传将会被再次中断 – ghovat

+0

thanx @ghovat –