2016-05-13 14 views
0

私は現在、AJAXコールによって生成されているアプリケーションの小さなセクションをリフレッシュしようとしています。最後に実行したコールを対象にして、同じパラメータを使用し、異なるボタンをクリックして実行します。以前にデータを受信した方法は、以前にクリックされたボタンからのものでした。私はMVCでバックエンドのC#で作業しています。ここに私のAJAXの電話があります:最後のAJAXコールを再実行しました

$('.eventlevel').on('click', function (e) { 
    e.preventDefault(); 

    $.ajax({ 
     type: "GET", 
     url: "/Home/GetTasksForEventLevel", 
     data: { 
      EventLevelID: $(this).attr('data-EventLevelID') 
     }, 
     success: function (eventLevel) { 
      $('#tasks').html(' '); 
      $.each(eventLevel.data, function (key, value) { 
       var html = " <div class='dashbox col-lg-5 col-sm-5 col-xs-5'>"; 
       if (value.EventLevel == 3) { 
        html += "<div class='green-circle'></div>"; 
       } 
       else if (value.EventLevel == 2) { 
        html += "<div class='yellow-circle'></div>"; 
       } 
       else if (value.EventLevel == 1) { 
        html += "<div class='red-circle'></div>"; 
       } 
       else if (value.EventLevel == 4) { 
        html += "<div class='grey-circle'></div>"; 
       } 
       html += "<p class='bodytext'>" + value.EventDescription + "</p>"; 
       html += "<p class='bodytext'>Pending Items: (" + value.EventValue + ")</p>"; 
       html += "<p class='bodytext'>Last Updated: " + value.EventDateTimeText + "</p>"; 
       html += "<p><a href='#'>View History</a></p>"; 
       html += "<button data-MonitoringEventID='" + value.MonitoringEventID + "' class='raise'>Raise Alert</button>"; 
       html += "<button class='review'>Commit Review</button> </div>"; 
       $('#tasks').append(html); 
      }); 
     } 
    }); 
    return false; 
}); 

ありがとうございました。

答えて

1

私はパラメータとしてajaxオブジェクトを受け入れ、 "最後の"呼び出しを追跡する変数に格納するajaxラッパー関数をお勧めします。このような何か動作するはずです:

var lastAjaxCall; 
function ajaxWrapper(obj){ 
    lastAjaxCall = obj; 
    $.ajax(obj); 
} 

をあなたの最後のAJAX呼び出しを呼び出す関数は、次のような単純なものになります。

function executeLastAjaxCall(){ 
    if(lastAjaxCall) $.ajax(lastAjaxCall); 
} 
+0

う私は私のクリックの中に機能を置いていますか? 'var lastAjaxCall; 関数ajaxWrapper(obj){ lastAjaxCall = obj; $ .ajax(obj); (lastAjaxCall); } $( '#refresh')。on( 'click'、 function executeLastAjaxCall(){ if(lastAjaxCall)$ .ajax(lastAjaxCall); }); –

+1

はい、コード内の '$ .ajax'呼び出しを' ajaxWrapper'の呼び出しで置き換えるだけです。次に、「最後の呼び出しを実行」ビヘイビアを実行する場合は、2番目のボタンのクリックイベントから 'executeLastAjaxCall()'を呼び出します。 –

+0

これは、関数宣言そのものを意味しています。あなたのコード。 –

0

場所関数内ajaxコール:

function getData(callback){ 
$.ajax({ 
    success: callback, 
    error: callback 
}) 
} 

getData(function(data)){ 
//Do something with data... 
} 
関連する問題