J'ai beaucoup de code dans la zone d'admin de mon site qui est, fondamentalement juste des opérations de CRUD utilisant l'affichage d'AJAX.Refactoring Javascript
Je me demandais si vous aviez des conseils sur refactorisation ces types de fonctions, soit dans des fonctions génériques ou des classes, etc.
Voici quelques exemples de code, bien que beaucoup de cela est reproduit dans d'autres fonctions avec juste différents ajax paramètres:
function BindAddMenuHeaderOption() {
$("#AddMenuHeaderOption").click(function (e) {
e.preventDefault();
var headerOptionId = jQuery.trim($("#HeaderOptions").val());
var menuHeaderId = jQuery.trim($("#MenuHeaderId").val());
$.ajax(
{
type: "POST",
url: "/Menu/AddMenuHeaderOption",
data: "menuHeaderId=" + menuHeaderId + "&headerOptionId=" + headerOptionId,
dataType: "html",
success: function (result) {
var domElement = $(result);
$("#ModalContent").empty();
$("#ModalContent").append(domElement);
BindAllBehaviours();
}
});
});
}
function BindAddMenuItem() {
$(".AddMenuItem").click(function (e) {
e.preventDefault();
//get header id from link by removing addmenuitem from this.id
var currentId = $(this).attr("id").replace("AddMenuItem", "");
//get itemnumber, itemname, itemdetails from textboxes with same header id
var restaurantId = jQuery.trim($("#RestaurantId").val());
var itemNumber = jQuery.trim($("#ItemNumber" + currentId).val());
var itemName = jQuery.trim($("#ItemName" + currentId).val());
var itemDetails = jQuery.trim($("#ItemDetails" + currentId).val());
$.ajax(
{
type: "POST",
url: "/Menu/AddMenuItem",
data: "reastaurantId=" + restaurantId + "&menuHeaderId=" + currentId + "&itemNumber=" + itemNumber + "&itemName=" + itemName + "&itemDetails=" + itemDetails,
dataType: "html",
success: function (result) {
var domElement = $(result);
$("#MenuContainer").replaceWith(domElement);
var newNum = parseInt(itemNumber) + 1;
$("#ItemNumber" + currentId).val(newNum);
BindAllBehaviours();
}
});
});
}
function BindUpdateMenuItem() {
$(".UpdateMenuItem").click(function (e) {
e.preventDefault();
var restaurantId = jQuery.trim($("#RestaurantId").val());
var itemNumber = jQuery.trim($("#UpdateItemNumber").val());
var itemName = jQuery.trim($("#UpdateItemName").val());
var itemDetails = jQuery.trim($("#UpdateItemDetails").val());
var vars = GetHtmlParameters($(this));
$.ajax(
{
type: "POST",
url: "/Menu/UpdateMenuItem",
data: "reastaurantId=" + restaurantId + "&menuItemId=" + vars["menuItemId"] + "&itemNumber=" + itemNumber + "&itemName=" + itemName + "&itemDetails=" + itemDetails,
dataType: "html",
success: function (result) {
var domElement = $(result);
$("#MenuContainer").replaceWith(domElement);
BindAllBehaviours();
}
});
});
}
Merci, mais la plupart des fonctions ne publient pas d'éléments de formulaire, c'est plus comme obtenir des paramètres d'URL pour passer des identifiants. – ddd