$('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;
});
Факты:
Я использую jquery v1.3.x (и не могу заменить на более новую версию из-за политики компании).
JSP находится во всплывающем окне.
Есть кнопка отправки с id=submitBtn
При нажатии кнопки "Отправить" он выполнит приведенный выше код и отправит данные в действие Struts.
URL действия:
someAction.do?someParam=blabla&someNo=213354345&mode=POP&act=Update Your Data
(примечание: я заменил некоторые конфиденциальные данные, но образец аргумента тот же)
Проблема в этой строке:
. $('тело') 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;
});