我有一个特定于IE8的问题与jQuery表单插件。
我通过multipart / form-data上传单个文件,并使用jQuery插件进行错误处理。在FF中一切正常,但在IE8中,在错误处理方法中传递的jqHXR对象为空(status = 0,text = null等,而不是status = 500,text =“Some error message”)。以下是我正在使用的一些代码:
HTML表单:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<form name=\"myForm\" id=\"myForm\" action=\"uploadServlet\" method=\"POST\" enctype=\"multipart/form-data\">");
<input type=\"file\" id=\"browseBox\" name=\"file1\"/>
<input type=\"submit\" id=\"uploadButton\"/>
</form>
jQuery的:
$("#myForm").submit(upload);
$("#myForm").ajaxForm();
function upload() {
var options = {
async: false,
success: uploadSuccessful,
error: uploadError
}
$("#myForm").ajaxSubmit(options);
return false;
}
function uploadSuccessful(data) {
alert(data);
}
function uploadError(jqXHR, textStatus, err) {
alert(jqXHR.responseText);
}
就像我提到的,IE8中的jqXHR是空的,但在FF中却不是这样。 servlet以我向用户显示的纯文本进行响应。任何想法为什么IE8特别无法从我的servlet获得响应?
答案 0 :(得分:1)
它也发生在我身上,当我运行Fiddler时,我发现使用ff / ie9 / chrome / etc请求是通过POST发送的,但是ie8是使用GET - 它从服务器返回404错误(在我的情况下).. 我的解决方案是在表单中添加method = post,但我看到你已经写过了。 尝试比较来自ffdler的ff和ie8的请求并搜索差异。
答案 1 :(得分:1)
当您使用JqueryForms时,IE8将文件格式作为GET请求发送...您必须设置
type: "post"
在你的jquery表单设置中。