2009-05-13 12 views
1

jqueryダイアログ内に非同期フォームの提出を追加しようとしています。私は.ajax()を使用しています。 すべて正常に機能していますが、提出には時間がかかります。 私はjqueryを初めて使用しており、これをデバッグ/最適化する方法が不明です。ラグがフロントエンドにあるのかバックエンドにあるのかをどうやって判断するのですか?いくつかのコードなしで本当にあなたの特定の状況のた​​めに知る方法はありませんが、あなたは明らかに多くのを取る何かをやっている場合を除き、任意の遅延はJavaScriptを使用しなくなりますJQueryとAjax

おかげで、

ナターシャ

+0

だけ追記として、私はあなたがアニメーションGIFや何かのいくつかの種類を追加することを示唆している(http://www.ajaxload.info /)を使用して、スクリプトが実行されていることをユーザーに示します。間違いなくあなたのバックエンドスクリプトのようです。または、それを受け取った後に解析してDOMに配置するデータが少し複雑な場合や、jQueryによって非常に重い処理が必要な場合もあります。あなたが望むよりも時間がかかります。どれくらいのことを意味しますか? – KyleFarris

答えて

6

ブラウザのリソース(大きなテーブルのソート、大量のHTMLの追加など)データを取得してシリアライズし、AJAXでサーバーに送信して応答するまでに時間がかかる場合は、問題はサーバー側のコードにあります。 Firebugのようなツールを使って確認することができます。このツールは、リクエストが発生した時刻と、サーバーが一度応答するのにかかった時間を表示します。

+2

ヒント:Firebugで、 'Net'パネルをアクティブにしてイベントをアクティブにしてください。また、パラメータ/ POSTデータも表示されます。 –

5

Firebugを使用している場合、コンソールタブには、リクエスト/応答の所要時間が表示されます。また、バックエンドプロセスの所要時間をログに記録することもできます。遅れがどこであるかの合理的な考え方。

+0

+1 Firebugは必要なすべてのタイミング情報を提供します。 –

1

バックエンドにひどいコードがある場合を除き、速度の問題はネットワークの問題によって引き起こされている可能性があります。 JavaScript/Ajaxはあなたを抱きしめていませんが、少なくとも直感的にはそう思わないでしょう。

0

遅くなる場所を特定するには、Dateオブジェクトを使用して現在の(フォームの送信がクリックされた直後の)ミリ秒数を取得し、beforeSendjQuery.ajax({beforeSend: function() { ... });に追加します。ページのどこかのタグ。その後、completeを使用して、開始からどれくらいの期間を決定することができます。

jQuery.ajaxオプション:http://docs.jquery.com/Ajax/jQuery.ajax#options

JS Dateオブジェクト:http://www.w3schools.com/jsref/jsref_obj_date.asp