2011-11-08 14 views
0
(function ($) { 
     $.fn.sendAuditToHandler = function (options) { 

      var defaultSettings = { 
       'url': '../SentinelOperationsUI/GenericHandler.ashx' 
      }; 

      var objectToSend = {}; 

      var opts = $.extend(defaultSettings, options); 

      $(this).find('input[type=text], select').each(function (i, val) { 

       var objectKey = $(val).attr('class'); 
       var objectValue = $(val).val(); 

       objectToSend[objectKey] = objectValue; 
      }); 

      objectToSend = JSON.stringify(objectToSend); 

      $.ajax({ 
       url: opts.url, 
       data: { 'AuditObject': objectToSend }, 
       success: function (data) { 

       } 
      }); 

      return this; 

     }; 
    })(jQuery); 

私が使いたいのは、関数呼び出しでajax success関数を使用するようなものです。何かのようにjquery関数にajax成功関数のコールバックを追加します。

sendAuditToHandler({ /* some options */ }, success: function() { //ajax success callback function }... 

答えて

1

通常のパラメータとして、または既存のオプションハッシュの一部として渡します。

$.fn.sendAuditToHandler = function (options, onSuccess) { 
    // etc. 
     $.ajax({ 
      url: opts.url, 
      data: { 'AuditObject': objectToSend }, 
      success: onSuccess 
     }); 

次に、あなたはそれを呼び出すとき:

sendAuditToHandler({ /* some options */ }, function(data) { 
    // Whatever you want. 
    alert("ohai"); 
}); 

またはオプションの一部として:

$.ajax({ 
    url: opts.url, 
    data: { 'AuditObject': objectToSend }, 
    success: opts.onSuccess 
}); 

そして、あなたはそれを呼び出す:

sendAuditToHandler({ 
    url: "the url", 
    // other options, then the method. 
    onSuccess: function(data) { 
     // Whatever you want. 
     alert("ohai"); 
    } 
}); 
+0

ありがとうございます。なぜ、私は引数のonsuccessを渡すだけですか?彼らはデフォルト設定を持っていますが、私はオプションを渡す必要がありますか? – Johan

+0

@Johan私はあなたが何を求めているのか分かりません。あなたは、成功関数を含むオプションであなたが望むものを渡すことができます。 –

+0

私は成功の関数を渡すだけでよいかどうかを尋ねて、オプションをスキップします:) – Johan

1

あなたが呼び出すことができますあなたの成功関数は、Ajaxコールの中で

$.ajax({ 
    url: opts.url, 
    data: { 'AuditObject': objectToSend }, 
    success: function (data) { 
     options.success(); 
    } 
}); 
関連する問題