2010-12-20 7 views
2

javascriptフレームワークプロトタイプを使用して作成された次のスクリプトが見つかりました。jqueryのjavascriptフレームワークのプロトタイプ

Event.observe(window, 'load', function() { 

    Event.observe('btnSubmit', 'click', purchaseCD); 

    connectToServer(); 
}); 

function connectToServer() 
{ 
    new Ajax.Updater(
     { success: 'CD Count', failure: 'errors' }, 
     'server_side.php', 
     { 
      method:  'get', 
      onSuccess: function(transport) 
      { 
       if (parseInt(transport.responseText)) connectToServer(); 
      } 
    }); 
} 

function purchaseCD() 
{ 
    new Ajax.Updater(
     { success: 'CD Count', failure: 'errors' }, 
     'server_side.php', 
     { 
      method:  'get', 
      parameters: { num: $('txtQty').getValue() } 
    }); 
} 

ここで誰でもこのスクリプトをプロトタイプではなくjQueryを使用するように変換できますか?私はprorotypeを全く知らないので、私はそれを理解していません。

答えて

2

Ajax.Updaterは、パラメータ1、それはパラメータで指定したURLへのリクエストの成功または失敗応答を更新するその中に二つの容器として、かかる

2.何このスクリプトでは、ページのロード時に(私は翻訳ということですDOMReadyの下では全く同じではなく、jQueryの規約に従う)、AJAXリクエストはserver_side.phpに送信されます。それが理解できる応答を受け取った場合、セッションを生き続けるために、すぐに別の要求を送ります。

これはひどいデザインのようです。あなたがそのようなことをするつもりなら、間違いなくリクエスト間のタイムアウトが必要です。

このスクリプトではあまりうまくいきませんが、すべてのAJAXリクエストは同じページ(server_side.php)で処理され、実行するアクションの指示にはさまざまなパラメータが使用されています。単に異なるアクションのために異なるページを要求するほうがきれいに見えます。

$(function() { 
    $('#btnSubmit').click(purchaseCD); 
    connectToServer(); 
}); 

function connectToServer() { 
    $.ajax({ 
     url: "server_side.php", 
     success: function(res) { 
      $('#CD Count').html(res); 
      if(parseInt(res)) 
       connectToServer(); 
     }, 
     error: function(xhr) { 
      $('#errors').html(xhr.responseText); 
     } 
    }); 
} 

function purchaseCD() { 
    $.ajax({ 
     url: "server_side.php", 
     success: function(res) { 
      $('#CD Count').html(res); 
     }, 
     data: { num: $('#txtQty').val() }, 
     error: function(xhr) { 
      $('#errors').html(xhr.responseText); 
     } 
    }); 
} 
+0

私のサーバーの接続時間は120秒です。それは大丈夫ですか? – oshirowanen

+1

@oshiro:私は実際のリクエストのタイムアウトについてはコメントしていませんでしたが、リクエスト間の遅延はコメントしていませんでした。元のコードでは、 'connectToServer'が数ミリ秒以内に完了すれば、すぐに' connectToServer'への別のリクエストを起動します。これはあなたのウェブサーバーにストレスを与えます。上記のコードでは、 'if(parseInt(res))'の後の 'connectToServer'への呼び出しは' setTimeout(connectToServer、10000); 'のように置き換えて、それぞれ数回ではなく10秒ごとに呼び出しを行う秒。 –

関連する問題