【发布时间】:2012-08-10 22:31:52
【问题描述】:
我有一个用于将文件上传到服务器的 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 上传文件插件会让生活更轻松...但这不是我的选择...
感谢您的指点!
可以吗
【问题讨论】:
-
为什么你不能使用其他人的插件,而必须自己编写?另外,你读过这个吗? stackoverflow.com/questions/166221/…
-
你知道异常究竟是什么时候发生的吗?如果您知道可以使用
throw()来强制您的catch块执行代码。我从未与slim合作过,所以看看这个提示是否对你有帮助。如果我错了请忽略!! -
真的是异常,不是php错误吗?如果是这样,catch 块将不会被触发,您也不会收到异常消息。
-
@Nal 重新启动轮子的动机有很多:教育目的,受许可证或主管限制,使用的平台与插件不兼容或需要大量更改
-
抱歉,伙计们回复晚了。感谢弗拉德的回答...我不能使用插件,因为环境确实受到限制...这迫使我重写很多 API 喜欢的东西jQuery UI 已经有了