0

Doctrine2.1でSymfony2.1を使用しています

サイトの多くの機能、タイトルの編集、記事の評価、オンザフライでのエンティティの作成などに AJAX を使用したいと考えています。

私の質問は簡単です:

次のように、機能ごとに JQuery 関数を作成する必要がありますか。

$('#specific-functionality').bind('click', function(e){

    var element = $(this);
    e.preventDefault();

    // the call
    $.ajax({
      url: element.attr('href'),
      cache: false,
      dataType: 'json',
      success: function(data){        

        // some custom stuff : remove a loader , show some value, change some css

      }
    });
  });

私には非常に重く聞こえるので、JS側にフレームワークがあるかどうか、またはこれを回避するために使用できる特定の方法があるかどうか疑問に思っていました。応答のタイプ (html_content 、boolean、integer) ごとにアイテムを再グループ化することを考えていましたが、それを適切に処理するための何かが既に存在している可能性があります。

4

2 に答える 2

1

私が理解していることから、あなたは JQuery ajax メソッドのより軽量なバージョンを求めています。ajax を使用する代わりに、直接の get/post メソッドがあります。

 $.get(element.attr('href'), {'id': '123'}, 
    function(data) { 
       alert(data); 
    } 
 );

エラー機能を設定するには

$.get(element.attr('href'), {'id': '123'}, function(data) {alert(data);})
.error(function (XMLHttpRequest, textStatus, errorThrown) {
                        var msg = jQuery.parseJSON(XMLHttpRequest.responseText);
                        alert(msg.Message);
});

また、コールバック関数を渡して、次のような同期操作を行うこともできます

function LoadData(cb)
{
    $.get(element.attr('href'), { 'test': test }, cb);
}

そして電話する

LoadData(function(data) { 
alert(data);
otherstatements; 
});

プログレス バーについては、手動で非表示および表示する代わりに、JQuery の ajaxStart および ajaxStop 関数を使用します。ページ上のすべての JQuery AJAX 操作に対して起動されることに注意してください。

 $('#progress')
   .ajaxStart(function () {
   //disable the submit button
   $(this).show();
   })
   .ajaxStop(function () {
   //enable the button
   $(this).hide();
   });
于 2012-11-02T16:56:03.377 に答える
0

の代わりに$('#specific-functionality').bind('click', function(e){、これを試してください:

$(".ajax").click(function(){

    var url = $(this).attr("href") ;
    var target = $(this).attr("data-target") ;
    if (target=="undefined"){
      alert("You forgot the target");
      return false ;
    }

    $.ajax(....

そしてhtmlで

<a class="ajax" href="..." data-target="#some_id">click here </a>

それが最も簡単な解決策だと思います。リンクを ajax 経由で機能させたい場合は、クラス「ajax」を指定data-targetして、結果を出力する場所に配置します。data-somethingすべてのカスタム要素をこれらのプロパティに配置できます。

于 2012-11-02T19:17:38.673 に答える