Я знаю, что функции могут храниться в атрибутах html для определенных событий (например, onmouseover), но может ли какой-либо атрибут ссылаться на функцию или только на специальные атрибуты?
Я бы хотел автоматически связывать обратные вызовы AJAX на основе атрибутов формы [например, OnSuccess = "предупреждение ( 'whoohoo');" и onfail = "alert ('You suck');"]. Возможно ли что-то подобное, или я должен был бы сохранить функцию в известном событии и вызвать событие в случае сбоя или успеха?
Я хотел бы поделиться кодом результата с SO для пользы сообщества. К сожалению, я не смог использовать data- * в качестве имени атрибута из-за того, что '-' не является допустимым char для имени свойства, а формы создаются с использованием MVC и анонимных типов.
// provide the ability to manually setup a form for ajax processing.
// target are the forms to be wired
// success is the callback function
function AjaxifyForms(target, success, fail) {
$(target).each(function() { // Wierdness if each isn't used with validation
$(this).validate({
submitHandler: function(form) {
$.ajax({ //create an AJAX request
type: "POST", //use POST (we could also load this from the form if wanted to)
url: $(form).attr("action"), //get the URL from the form
data: $(form).serialize(),
datatype: "json",
success: function(data) {
if (success != undefined && success != null) success(data);
else if ($(form).attr("ajaxSuccssCallback") != undefined && $(form).attr("ajaxSuccssCallback") != null)
window[$(form).attr("ajaxSuccssCallback")](data);
else alert("Success");
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
if (faile != undefined && fail != null) fail(data);
else if ($(form).attr("ajaxFailCallback") != undefined && $(form).attr("ajaxFailCallback") != null)
window[$(form).attr("ajaxFailCallback")](data);
else alert("Epic Fail");
}
});
return false; //don't forget to cancel the event so we don't submit the page!
}
});
});
}