【发布时间】:2013-10-07 16:12:29
【问题描述】:
我有一个函数,我将 form 元素传递到其中,以便使用 AJAX 处理表单提交。
我想从我的函数返回将处理表单提交的 ajax 对象,以便我可以附加额外的done 回调——问题是我不知道如何在不创建它的情况下返回 ajax 对象(并执行它)首先。
我怎样才能用 promise 代替实际的 ajax 对象,以便我返回一些东西来附加额外的回调?
HandleModalFormSubmit: function (element) {
var form,
modalcontainer = $(element).closest('.modal'),
modal = $(element).closest('.modal-dialog'),
ajaxdata;
if (element.is('form')) form = $(element);
else {
form = element.find('form');
}
$.validator.unobtrusive.parse(form);
$(element).on('submit', function (event) {
event.preventDefault();
ajaxdata = $.ajax({
type: form.method,
url: form.action,
data: $(form).serialize()
}).done(function (data) {
if (data.status == null) {
modal.html(data);
} else {
modalcontainer.modal('hide');
};
}).always(function (data) {
modal.spin(false);
modal.fadeTo(500, 1);
});
modal.fadeTo(300, 0);
modal.spin();
});
var returningobject = {
element: form,
ajax: ajaxdata
};
return returningobject;
}
}
编辑:这是我希望函数发生的事情
var formobject = $Global.HandleAjaxForm(element);
formobject.ajax.done(function(data1) {
if (data1.status == 'ok')
window.location.href = (data.redirectToUrl == null) ? "~/Dashboard" : data.redirectToUrl;
});
【问题讨论】:
标签: jquery ajax asynchronous promise