【问题标题】:jQuery ajaxForm plugin not running success function in IE6jQuery ajaxForm 插件未在 IE6 中运行成功功能
【发布时间】:2009-04-01 16:39:36
【问题描述】:

我正在使用 jQuery 插件 ajaxForm 通过 AJAX 提交文件上传表单。脚本提交表单,成功后运行uploadResponse(),将新行添加到页面上的<table>。它在 Opera、Firefox、Safari、IE7 和 IE8 中运行良好。

但是,IE6 在表单提交后不会运行uploadResponse()。来自脚本的 POST 请求运行,您可以在刷新页面时看到该文件。但是,uploadResponse() 根本没有运行,DOM 也没有更新。

这是脚本的一部分:

/**
 * Ajaxified upload form
 */
$('form#upload').ajaxForm(
{
    url: 'ajax/upload.php',
    success: uploadResponse,
    dataType: 'xml'
});

/**
 * Upload form response
 *
 * @param responseXML Returned from the AJAX POST
 */
function uploadResponse(responseXML)
{
    var displayName = $('display_name', responseXML).text();
    var fileName = $('name', responseXML).text();
    var directoryID = $('directory_id', responseXML).text();
    var abbrTitle = $('abbr_title', responseXML).text();
    var tableRow = 'file_' + tableRowCount;

    $('table#listing tbody').prepend(row(displayName, null, '', 'delete.php?directory_id=' + directoryID + '&file=' + fileName, 'Delete', null, tableRow, 'fileName jsHide', 'rename jsHide', 'delete jsHide', abbrTitle));
    $('td.jsHide').fadeIn();

    // AJAX renaming
    $('tr#file_' + tableRowCount).find('td.fileName').click(generateRenameForm);

    // Remove "no files" notficiation
    $('p#noFiles').remove();

    alternatingRows();
    tableRowCount++;
}

uploadResponse() 函数中的特定代码没有问题。它根本无法运行(我使用alert() 对其进行了测试)。

此外,IE6 显示“此页面包含安全和非安全内容”对话框。所有脚本、样式表等都在安全服务器上是本地的,所以据我所知,没有什么是不安全的。我已经非常彻底地检查了。

感谢您的帮助。

【问题讨论】:

    标签: jquery internet-explorer-6


    【解决方案1】:

    数据类型:xml 是问题所在。我不确定我在哪里学到了这个技巧(所有功劳归功于原始来源)。这是最有可能解决此问题的方法:

    将“数据类型:xml”替换为

    datatype: ($.browser.msie) ? "text" : "xml"
    

    在开始使用 xml 响应之前,您需要这样做:

    function parseXMLResult(result) {
        var xmlDoc;
        if (typeof result == 'string') {
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async = "false";
            xmlDoc.loadXML(result);
        } else {
            xmlDoc = result;
        }
        return xmlDoc;
    
    }
    

    希望这能解决您的问题。

    注册安全/不安全警告,您肯定至少有一个元素可能是通过 http 加载的 image/css/js 文件。此问题并非特定于 IE6,您应该在 FireFox 的地址栏中看到证书符号有一个红色的“i”,表示页面中存在问题。 使用FireBug 之类的工具找出违规元素。

    【讨论】:

      【解决方案2】:

      你在另一台电脑上测试过吗?也许是你 IE6 中的一个安全设置。

      【讨论】:

      • 否,但它是默认的 XP 安装,所以即使默认的安全设置不起作用,问题仍然存在。
      猜你喜欢
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多