Приложение, с которым я работаю, нуждается в быстром ответе. Клиент должен создать конфигурацию, заполнив форму. Каждая модификация в форме отправляет форму на сервер для проверки. Сервер отвечает новой HTML-страницей. Затем страница отображается в браузере. Моя задача - добавить Ajax в этот процесс, чтобы улучшить взаимодействие с пользователем. Вот что я сделал до сих пор:
function doSubmitWithAjax(){
var datum = $('#hiddenvars').serialize();
var ajax=$.ajax({
type : 'POST',
url : 'frontend',
cache : false,
dataType : 'html',
data : datum
});
ajax.success(function(XHR,text,jqXHR){
var dom = document.createElement('div');
dom.innerHTML=XHR;
var bod = $('#hiddenvars',dom);
$('#hiddenvars').replaceWith(bod);
});
ajax.error(function(jqXHR, textStatus, errorThrown){
alert('request error '+errorThrown);
});
}
XHR - это HTML-страница, полученная с сервера. По сути, я просто хочу получить форму (#hiddenvars) и поместить ее вместо формы, уже существующей в DOM.
Функция doSubmitWithAjax()
запускается каждый раз, когда в форме происходит изменение. Настоящая реализация отлично работает для Firefox и Chrome. С IE время отклика слишком велико. Я использовал некоторые инструменты для проверки того, что занимает столько времени, и оказалось, что replaceWith()
медленнее (1,3 секунды) по сравнению с FF (0,2 секунды).
Мой вопрос: как я могу улучшить время отклика для IE? Что я могу использовать вместо replaceWith ()? Я попытался: $('#hiddenvars').empty().replaceWith(bod);
, потому что мне не нужна замененная форма из DOM, но все еще медленно.
Спасибо!