私が作業しているアプリケーションには、迅速な対応が必要です。クライアントは、フォームに記入して構成を作成することになっています。フォームを変更するたびに、検証のためにフォームがサーバーに送信されます。サーバーは新しい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()
FF(0.2秒)と比較して遅い(1.3秒)ことがわかりました。
私の質問:IEの応答時間を改善するにはどうすればよいですか?replaceWith()の代わりに何を使用できますか?私は試し $('#hiddenvars').empty().replaceWith(bod);
ました:DOMから置き換えられたフォームは必要ないのですが、それでも遅いからです。
ありがとう!