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

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

我使用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(); } } 

问题:如果由于某种原因导致上载失败,则抛出exception,用户将进入PHP错误页面。 如果上传完成无exception,则应用程序将重定向到主页面。

所需要的是:如果上传成功,应该将应用程序重定向到主页面,就像现在一样…但是如果抛出任何exception,而不是转到PHP错误页面,应用程序应保持在上载页面上id =’response’应该显示exception。

是否可以使用jQuery submit()执行此类操作:

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

????

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

感谢您的任何指示!

可能吗

你需要在这里使用ajax是使用ajax上传文件的例子

使用jQuery.ajax发送multipart / formdata

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

我在过去遇到了类似的问题,我提出的是使用隐形iframe发布文件上传并获取html结果,希望这有帮助!

我想这就是你要找的东西

HTML代码:

 

我添加了一个隐藏的iframe,并使表单的目标成为iframe的id。 这将使表单提交到iframe,因此整个页面不会重新加载

javascript代码:

  

我添加了一个名为showUploadError的全局函数,如果出现错误,将从php上传函数调用该函数

PHP代码

      

如果上传成功,我们输出一些javascript代码,将父页面(主页面)重定向到新位置,否则它将调用showUploadError javascript函数。

请记住,这是一个粗略的例子,我还没有测试过。

您拥有的选项是将“提交”发送到“iframe”,然后使用“js”获取响应。 在PHP中,您发送一条消息,然后在“JS”中进行解释。

HTML:

 

使用Javascript:

 var runSubmitForm = function() { var $iframe = $('#uploadformResponse'), fnLoadIframe = function(event) { $iframe.unbind('load'); var response = $iframe.contents(), aresponse = response.split('|'); console.log('debug respnse', response); if (aresponse.length != 2) { $('#response').html("Error I ???"); } if (aresponse[0] == '1') { window.location = aresponse[1]; } else if (aresponse[0] == '0') { $('#response').html(aresponse[1]); } else { $('#response').html("Error II ???"); } }; $iframe.bind('load', fnLoadIframe); $('#uploadform').submit(); }; 

PHP:

 function uploadFile(){ try{ // if success uploading echo '1|/main-page'; } catch(Exception $e) { // if error echo '0|' . $e->getMessage(); } exit; // optional }