2016-05-29 10 views
0

私は場合によっては特定のテキストを表示しようとしています。

たとえば、データが正常に保存された場合は、「あなたのデータは保存されました」と表示されます。右のアイコンをクリックします。

私の問題は$.ajaxの前にありますが、すべて動作していますが、その後、私は$(this).find(...)が私に要素を返さないと思います。

可能ですか?

は、ここに私のコードです:AJAXコールバックthis

$('form.modal-form').on("submit", function (event) { 
    event.preventDefault(); 

    icon = 'fa-spinner fa-pulse'; 
    text = 'Save in progress'; 
    $(this).find('.modal-footer .pull-left').html('<i class="fa ' + icon + ' fa-fw"></i><span class="hidden-xs">' + text + '</span>'); 



    $.ajax({ 
     type : 'POST', 
     data : $(this).serialize(), 
     url : 'assets/php/ajax/'+$(this).data('target')+'.php', 
     success: function(response){ 
      var json = $.parseJSON(response); 
      if(json.type=='success'){ 
       icon = 'fa-check'; 
       text = json.message; 
       $(this).find('.modal-footer .pull-left').html('<i class="fa ' + icon + ' fa-fw"></i><span class="hidden-xs">' + text + '</span>'); 
      } 
      if(json.type=='error'){ 
       icon = 'fa-exclamation'; 
       text = json.message; 
       $(this).find('.modal-footer .pull-left').html('<i class="fa ' + icon + ' fa-fw"></i><span class="hidden-xs">' + text + '</span>'); 
      } 
     } 
    }); 
}); 
+0

何度も繰り返します。非同期のものを実行する前に 'this'はこれではありません。 '$ .ajax'を実行する前に' somehingElse'に 'this'を設定してください。 –

答えて

0

submitハンドラ内の1つの異なるオブジェクトを参照するので、それを失うことはありません、あなたは最初の場所で何かに割り当てる必要があります(

var that = $(this) 

とOの代わりにthatを使用します。たとえば、event.preventDefault後、その後)コールバックにそれが見えるようにするf $(this)

+1

'$ .ajax({context:this、url:...'には 'context'オプションもあります – charlietfl

関連する問題