Slim PHP返回的jQuery .submit()上传表单显示响应 - php

我有一个HTML表单,用于将文件上传到服务器。为了简洁起见,我只展示了必要的香料

 <form id='uploadform' method='post' enctype='multipart/form-data' action='index.php/upload'>
   <input name='myFile' id='myFile' type='file'/>
 </form>
 <input type='button' id='upload' value='Upload'/>
 <div id='response'></div>

我使用jQuery.submit()提交表单:

 $('#uploadform').submit();

业务逻辑是Slim PHP:
$ app-> post('/ upload','uploadFile');
....

   function uploadFile(){
       try{
           // if success uploading
           $app->redirect('/main-page');

       }catch(Exception $e){
           // if error 
           echo $e->getMessage();

       }
    }

问题:如果由于某种原因上传失败,则会引发异常,将用户带到PHP错误页面。如果上载无一例外地完成,则应用程序将重定向到主页。

所需要的是:如果上传成功,则应像现在一样将应用程序重定向到主页...但是,如果抛出任何异常,则应用程序应停留在上传页面上,而不是转到PHP错误页面。 id ='response'应该显示异常。

是否可以使用jQuery Submit()做类似的事情:

     $('#uploadform').submit(function(response){
           $('response').html(response);
     });

????

我知道JQuery上传文件插件会让生活更轻松...但这对我来说不是一个选择...

感谢您的指导!

可能吗

参考方案

您需要使用ajax,这是使用ajax上传文件的示例

Sending multipart/formdata with jQuery.ajax

没有ajax,您可以重定向用户并通过GET方法发送错误文本,并将此文本放入响应标签

Slim 4中的路由中间件不会停止调用路由中的可调用对象 - php

我正在使用Slim4中的授权中间件。这是我的代码:$app = AppFactory::create(); $app->add(new Authentication()); $app->group('/providers', function(RouteCollectorProxy $group){ $group->ge…

PHP:不推荐使用password_hash的'salt'选项 - php

我正在使用密码哈希进行注册。我需要手动创建Salt,以下是我使用的代码:$options = [ 'cost' => 11, 'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM) ]; $password = password_hash( $this->…

PHP-全局变量的性能和内存问题 - php

假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…

PHP strtotime困境 - php

有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00�…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…