$('body').html() выдал пустое содержимое из данных ответов, полученных из $jQuery.post в Firefox

Я получил этот код JavaScript в JSP:

$('#myForm').submit(function(event) {
    event.preventDefault();

    var act = $('#myForm').attr('action') + '&act=' + $('#submitBtn').val();

    var dataStr = $("#myForm").serialize();

    $.post(act, dataStr, function(data, status) {
        $('body').html(data);
    });
    return false;
});

Факты:

  1. Я использую jquery v1.3.x (и не могу заменить на более новую версию из-за политики компании).

  2. JSP находится во всплывающем окне.

  3. Есть кнопка отправки с id=submitBtn

  4. При нажатии кнопки "Отправить" он выполнит приведенный выше код и отправит данные в действие Struts.

  5. URL действия:

    someAction.do?someParam=blabla&someNo=213354345&mode=POP&act=Update Your Data

    (примечание: я заменил некоторые конфиденциальные данные, но образец аргумента тот же)

  6. Проблема в этой строке:

    . $('тело') HTML (данные);

    Выдает ошибку: NS_ERROR_FAILURE: ошибка в консоли ошибок. Я слышал, что это связано с междоменным запросом, но мое приложение на localhost, как это могло произойти?

В IE 8 он успешно заменил содержимое текущей страницы значением данных (которое является строкой html). Но в Firefox (v22) он дал пустую страницу, я проверил правой кнопкой мыши -> Просмотр источника, он действительно пуст. Затем я проверил с помощью firebug, что данные ответа действительно содержат строку html-страницы результата. Если я отлаживаю с предупреждением (данные); перед вызовом $('body').html() также отображается строка html.

Таким образом, функция $.post() успешно возвращает данные ответа, но кажется, что функция $('body'). Html () не смогла обработать данные.

Так что же на самом деле произошло? Я действительно понятия не имею.

Какое решение для этого?

ОБНОВИТЬ:

Я проверил консоль ошибок, я получил эту ошибку после отправки страницы:

Error: NS_ERROR_FAILURE: Failure
Source File: http://localhost:8080/myapp/script/jquery.js
Line: 19

ОБНОВЛЕНИЕ 2: я отлаживаю код Java, я обнаружил, что входной HTML-тег в JSP с индексированным именем массива выглядит так:

myItem[0].name
myItem[1].name
...

не были успешно отправлены в класс ActionForm. Я исследовал источник проблемы, возможно, из сторонней библиотеки javascript.

1 ответ

Попробуй что-нибудь подобное

 $.post(act, dataStr, function(data) {
    document.body.innerHTML = data;
});
Другие вопросы по тегам