2010-11-24 11 views
2

jQuery AJAX関数を、以下に示すAJAX関数の型に使用することには本当に利点がありますか?明らかに、構文は少しクリーナー/短いですが、私の既存のajaxコードを書き直すことを正当化するような顕著な違いはありますか?AJAX:XMLHttpRequestの代わりにjQueryの.ajax()を使用する利点?

var ajax = getXmlObject(); 
var url= '/addPartToCart.php?m=' + encodeURIComponent(m) + 
     '&q=' + qty + 
     '&refresh=' + randomString(); 

if (ajax.readyState == 4 || ajax.readyState == 0) { 
    ajax.open("POST", url, true); 
    ajax.onreadystatechange = function(){ 
     if (ajax.readyState == 4) {  

     } 
    }; 
    ajax.send(null); 
} 

function getXmlObject() { 
    if (window.XMLHttpRequest) { 
     return new XMLHttpRequest(); 
    } else if(window.ActiveXObject) { 
     return new ActiveXObject("Microsoft.XMLHTTP"); 
    } else { 
     //error 
    } 
} 

UPDATE

私はjQueryの.ajax()を使用するように私のAJAX機能のすべてを再プログラムしました。スピードと信頼性が大幅に向上したと言わざるを得ない。

+0

さらに多くのパラメータ設定が可能です(*一言ではありませんが、あなたは意味を持っています*) –

+0

私はあなたのポイントを見ています。私はフォームをシリアル化し、url + = '&formJSON =' + encodeURIComponent(serializedFormString);に固定します。 – Dutchie432

答えて

2

jQueryのsrc/ajax.js source codeを見てください。異なるブラウザ間の不整合を知ら

  • 修正とラップ:それはちょうど10ない720 slocだし、一つの理由は、主にあります。コメントは、これらの問題の多くを明らかにするでしょう。

  • JSONPを同じインターフェイス、イベントフックなどで処理するなどの特別な機能を提供します。私はjQuery.Post(URL)と言うことができますJSとjQueryの初心者なので

1

ウェブサイトの他の部分ですでにjQueryを使用していない限り、書き直す価値はないかどうかはわかりません。主な利点は、コードがjQueryで読みやすくなり、ブラウザ間の互換性の問題が発生することです。

jQueryをAJAX専用に使用するのは良い考えではありません。

+0

いいえ。私はすでにさまざまな面でjQueryを使用しています。 – Dutchie432

0

。上記よりも百万分の一度読みやすくなります。:-)

+0

もちろん、あなたのコードよりも多くのことがあります。メッセージを送信する必要がある場合は、コードの半分を削除することができます。 – Dutchie432

-2

はい、gotoのw/if文はループ、forループ、list comprehension、またはarray map/filter/reduceでできることはすべて実行できます。

+0

downvote私はあなたが望むならば、同じことをします。 jQueryのajaxや特に$ .loadを使った表現力/簡潔さ/明快さは、配列マップがifとjumpとindexingをたくさん使ったよりも優れているのと同じように、問題に見られるAjaxパターン全体を書くのがずっと面倒です –

0

jquery ajaxが提供する追加機能が必要かどうかは、実際に依存します。私は文字列コンスタットの代わりにオブジェクトリテラルとしてデータを送る傾向があります。私が非常に頻繁に使用する1つの機能は、応答html内のスクリプトタグを評価する機能です。 jQuery ajaxはこれらのことを非常にうまく処理します。

コードに満足している場合は、そのコードに従ってください。私はあなたがそれを含んでいれば、あなたはjQueryを実装するための多くの場所(ajaxに加えて)を見つけるだろうと思う。 :)

関連する問題