jQuery Ajax appel à un contrôleur
Je suis nouveau sur Ajax et je vais essayer de désactiver une case à cocher si certains éléments sont sélectionnés dans une liste déroulante. J'ai besoin de passer dans le mlaId à la GetMlaDeliveryType(int Id) de la méthode dans le RecipientsController.cs.
Je ne suis pas exactement sûr de savoir comment configurer l'appel ajax dans la fonction javascript checkMlaDeliveryType(mlaId).
// MLA Add disable express checkbox if delivery type is electronic
$('.AddSelectedMla').change(function () {
var deliveryType = checkMlaDeliveryType($('.AddSelectedMla').val());
//disable express option if delivery type is Electronic
if (deliveryType == "Mail") {
$(".mlaExpressIndicator").removeAttr("disabled");
}else{
$(".mlaExpressIndicator").attr('checked', false).attr("disabled", true);
}
})
//ajax call to get delivery type - "Mail" or "Electronic"
function checkMlaDeliveryType(mlaId)
{
$.ajax({
type: "GET",
url: "/Recipients/GetMlaDeliveryType/" ,
data: mlaId,
dataType: ,
success:
});
}
RecipientsController.cs
public string GetMlaDeliveryType(int Id)
{
var recipientOrchestrator = new RecipientsOrchestrator();
//Returns string "Electronic" or "Mail"
return recipientOrchestrator.GetMlaDeliveryTypeById(Id);
}
EDIT:
Voici comment la finale javascript regardé qui a travaillé
// MLA Add disable express checkbox if delivery type is electronic
$('.AddSelectedMla').change(function () {
checkMlaDeliveryType($('.AddSelectedMla').val());
})
//ajax call to get delivery type - "Mail" or "Electronic"
function checkMlaDeliveryType(mlaId)
{
$.ajax({
type: 'GET',
url: '@Url.Action("GetMlaDeliveryType", "Recipients")',
data: { id: mlaId },
cache: false,
success: function (result) {
//disable express option if delivery type is Electronic
if (result == "Mail") {
$(".mlaExpressIndicator").removeAttr("disabled");
} else {
$(".mlaExpressIndicator").attr('checked', false).attr("disabled", true);
}
}
});
}
Merci pour l'edit; j'ai été en mesure d'obtenir le mien de travail sur cette base.
OriginalL'auteur Ronald McDonald | 2012-09-24
Vous devez vous connecter pour publier un commentaire.
puis réparer votre contrôleur de l'action, de sorte qu'elle renvoie un ActionResult, pas une chaîne de caractères. JSON serait approprié dans votre cas:
Maintenant votre succès de rappel sera directement transmis un javascript instance de votre modèle. Vous n'avez pas besoin de spécifier n'importe quel
dataType
paramètres:Non, vous ne retourne aucun résultat. AJAX est asynchrone, ce qui signifie que vous devez manipuler le seul résultat de la à l'intérieur la
success
de rappel. Vous pouvez également appeler une autre fonction de la réussite de rappel qui va effectuer les opérations nécessaires sur le résultat.ok merci pour l'aide
OriginalL'auteur Darin Dimitrov
Ensemble
data
dans l'appel Ajax ainsi que sa clé correspond au paramètre sur le contrôleur (qui est,Id
):Noter également qu'il est préférable d'utiliser
@Url.Action(actionName, controllerName)
pour obtenir une URL de l'Action:OriginalL'auteur McGarnagle