#jquery
#jquery
Вопрос:
(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 в моем вызове функции. Что-то вроде
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");
}
});
Комментарии:
1. спасибо, но почему я не могу передать onsuccess только в аргументах? нужно ли мне передавать параметры, даже если у них есть настройки по умолчанию?
2. @Johan Я не понимаю, о чем ты спрашиваешь. Вы можете передать все, что хотите, в опциях, включая функцию успеха.
3. я спрашиваю, нормально ли передавать только функцию успеха и пропускать параметры 🙂
4. неважно, я просто забыл добавить
{
, спасибо за ваш подробный ответ 🙂5. @Johan Ах, я понимаю 🙂 Да, как вы обнаружили, вы можете 🙂
Ответ №2:
Вы можете вызвать свою функцию успеха внутри вызова ajax
$.ajax({
url: opts.url,
data: { 'AuditObject': objectToSend },
success: function (data) {
options.success();
}
});