Я бы написал для него небольшой плагин:
(function ($) {
jQuery.fn.myClick = function (destination) {
this.click(function () {
var formData = 'option=saveuser&'+$('form#save-user').serialize();
$.ajax({
type: 'POST',
url: 'process.php',
data: formData,
success: function(msg){
if(msg === 'empty') {
alert('Required Values Missing');
} else if(msg === 'duplicateEmail'){
alert('Email already exist');
} else {
window.location = destination(msg);
}
}
});
});
}
}(jQuery));
Тогда, чтобы вызвать его, вы просто сделаете:
$('form#save-user button[name="save-user-close"]').myClick(function() {
return 'index.php?users&option=create';
});
и
$('form#save-user button[name="save-user"]').myClick(function (msg) {
return "index.php?users&option=edit&user_id="+msg+'&msg=success';
});
Вы должны увидеть, куда мы идем; мы добавляем параметры к небольшому методу, который мы создали, где вы можете указать, что меняется между каждым вызовом.
Поскольку в данном случае window.location
зависит от ответа AJAX (и мы не знаем ответ, когда мы вызываем функцию!), Мы не можем просто предоставить строку (или что-то подобное) в качестве параметра , Вместо этого мы передаем функцию, которую мы вызываем после получения ответа AJAX, при условии, что msg
в качестве переменной; и полагаться на функцию, чтобы обеспечить строку, которую мы установили в window.location
.
Что касается вашего второго вопроса, вы передаете обработчик события в методы события jQuery; обработчиком события будет ссылка на функцию (обычно ссылка на анонимную функцию )