我的文件未在jquery.ajax()中使用FormData发布。服务器将POST视为GET,因为请求数据可能已损坏。
在F12开发人员工具中>网络,“请求正文”窗格显示“数据无法呈现”。 请求标头包含内容长度但没有内容类型! Firebug显示两者,它在FF中工作。如果删除发送文件的行,则可以正常发布普通表单,并在“网络”选项卡中显示。
EmulateIE10无法正常工作EMulateIE9可以工作,但不支持多文件上传。
代码如下:
$('#uploadForm').submit(firstAJAX); // overrides submit
...
function firstAJAX(e) {
e.preventDefault();
e.stopPropagation();
// loop through selected file
//MAKE A unique AJAX REQUEST to create a record, return ID, call secondAJAX(ID) for each first request
...
function secondAJAX(response, params) {
// after making sure firstAJAX was successful.
...
var formData = new FormData();
var key = $(response).find("#keyx").text();
formData.append('file1', $('#file1')[0].files[params.idx], $('#file1')[0].files[params.idx].name);
formData.append('dockey', key);
$.ajax({
url: 'global file processor with FULL URL',
type: 'POST',
data: formData,
contentType: false,
processData: false,
cache: false,
index: params.index,
success: function(data) {
},
error: function(jqXHR, error, errorThrown) {
}
});
}
到目前为止,我已经尝试过:
任何帮助都将深表感谢!感谢。
PS:我目前无法访问服务器端代码,但问题是相同的代码正在使用FF。我通常使用防火墙和东西,但没什么特别的。服务器端代码可能是apache / jboss / jsp。
更新:在我看来,在与IE交换信息时,Apache / jboss / SSL / SSO认证正在起作用,这正是IE放弃通信的原因。在新项目中尝试使用C#的示例代码。在IE11中一切正常!
你们有人建议我把它发布到superuser.com吗?
...
UPDATE2:绝对是XHR正在起作用。我可以使用一个典型的帖子,但NETWORK显示正确的Content-Type标题,但在使用XHR.send()
时不会发送
答案 0 :(得分:0)
如果有人感兴趣,我能够解决问题。原来,代码包括Sarissa库,它使用旧的MSXML ActiveX对象覆盖了IE的默认XMLHttpRequest对象。调整了该代码并开始工作。
感谢您查看此问题。