Плагин jQuery ajaxForm не работает функция успеха в IE6 - PullRequest
1 голос
/ 01 апреля 2009

Я использую плагин 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 отображает диалоговое окно «Эта страница содержит защищенный и небезопасный контент». Все сценарии, таблицы стилей и т. Д. Все локальны на защищенном сервере, поэтому, насколько я знаю, небезопасно. Я проверил это довольно тщательно.

Спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 20 мая 2009

Тип данных: 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;

}

Надеюсь, это решит вашу проблему.

За исключением безопасного / незащищенного предупреждения, у вас определенно есть хотя бы один элемент, который может быть файлом image / css / js и загружается через http. Эта проблема не характерна для IE6. Вы должны увидеть символ сертификата в адресной строке FireFox, чтобы иметь красный значок «i», указывающий на наличие проблем на странице. Используйте инструмент, такой как FireBug , чтобы выяснить элемент-нарушитель.

0 голосов
/ 01 апреля 2009

Вы проверяли это на другом компьютере? Возможно, это настройка безопасности в вашем IE6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...