我在 FF、Safari 中有一个有效的上传进度条,但在 IE 中没有。
基于 jquery.form 提交表单,但是当上传完成时,PHP 应用程序会发出一个全新的页面,该页面将在 xhr.responseText 中接收。响应被放置在一个新文档中。
这适用于 FF,...
在 IE 上,responseText 以“\n <table class=...”开头,即 <body> 标签内的文本(而不是整个 <html> ... </html> 页面)。
这是怎么回事?我必须怎么做才能让 IE 将所有标签保留在响应中?
更新:
我在用:
- jQuery 表单插件
- 版本:3.35.0-2013.05.23
连接事物的 jq 如下所示:
$('#JQF').ajaxForm({
dataType: 'html',
beforeSend: UP.start,
success: UP.stop
});
UP.stop:
function (html, status, xhr) {
startTime = null;
setTimeout(function () {
jsonForm.success(html, status, xhr);
}, 10);
}
和
jsonForm.success:
function(responseText, statusText, xhr, elt)
/*
1.) responseText or responseXML value (depending on the value of the dataType option).
2.) statusText
3.) xhr (or the jQuery-wrapped form element if using jQuery < 1.4)
4.) jQuery-wrapped form element (or undefined if using jQuery < 1.4)
)
*/ {
if (typeof responseText === 'string')
{
if (/<html>/i.test(responseText))
{
jsonForm.reloadMain(responseText);
}
else if (responseText)
{
alert(responseText); <<<========== this is executed.
}
}
else if (responseText && typeof responseText === 'object')
{// decode and execute jquery instructions
jsonForm.responseEval(responseText, {});
jsonForm.init(); // in case we loaded something with a jsonForm in it
}
}
更新 2:
要关闭限制返回的 iframe 的使用,必须包含 ajaxForm 选项 iframe: false。