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 }