【发布时间】:2011-02-19 01:45:00
【问题描述】:
这是我的测试用例。如果表单已发布,则会发送 500 错误响应。如果没有,则发送表单。
如果文件输入标记被注释掉,则调用错误处理程序。如果存在文件输入标记,则不调用错误处理程序。我认为这可能与 jQuery 需要使用 iframe 来处理上传和 iframe don't seem to respond to the error handler 的事实有关。
编辑:
如果我将iframe: true 添加到传递给ajaxSubmit 的选项中以强制使用iframe,则非文件上传情况也会停止工作,因此它肯定与iframe 有关。
Edit2:我正在使用jQuery Form Plugin。
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
header('HTTP/1.1 500 Internal Server Error');
die;
} else {?>
<html><head>
<script type='text/javascript'
src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js?ver=2.9.2'></script>
<script type='text/javascript'
src='http://github.com/malsup/form/raw/master/jquery.form.js?v2.43'></script>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery('a').click(function() {jQuery('form').ajaxSubmit({error: function(){alert('error handler called');}})});
});
</script>
</head><body>
<form method="POST">
<input type="text" name="mytext" />
<input type="file" name="myfile" /><!-- comment this element out -->
<input type="hidden" name="blah" value="blah" />
<a>submit</a>
</form>
</body></html>
<?php }
有没有办法让错误处理程序在这两种情况下都被调用?
【问题讨论】:
-
究竟什么是“ajaxSubmit”?是插件还是什么?你自己的代码?它不在 jQuery 1.4.2 中。
-
抱歉,我应该包含问题标题中提到的插件的链接:jquery.malsup.com/form
标签: javascript jquery ajax upload