J'essaie actuellement de mettre en œuvre une forme Ajax dans MVC 5.Ajax.BeginForm ne fonctionne pas en chrome MVC 5
@using (Ajax.BeginForm("Requirement", "Purchase", null, new AjaxOptions { OnSuccess = "redirectionClick", OnFailure = "Retry", HttpMethod = "POST" }, new { id = "RequirementForm", autocomplete = "off" }))
{
//Various input fields
@Html.AntiForgeryToken()
<input type="submit" value="Submit" class="btn btn-primary EqualSized" id="SubmitBtn" style="width:30%">
<input type="button" value="Reset" id="Reset" class="btn btn-primary EqualSized" style="width:30%">
}
Les fonctions sous balise script:
function CloseModals() {
$('.modal').modal('hide');
$('body').removeClass('modal-open');
$('div.modal-backdrop').remove();
}
function redirectionClick() {
CloseModals();
bootbox.alert("Saved Successfully!");
$.ajax({
url: "@Url.Action("Requirement", "Purchase")",
async: false,
success: function (result) {
$('#PageData').html(result);
}
})
}
function Retry() {
alert('Unknown Error, Please try submitting the form again!');
$('#SubmitBtn').attr('disabled', false);
}
$('#SubmitBtn').click(function() {
if ($('#RequirementForm').valid())
$(this).attr('disabled', true);
});
Et mon contrôleur:
[HttpPost]
[ValidateAntiForgeryToken]
public void Requirement(Requirement Details)
{
//Logic
}
Le code ci-dessus fonctionne dans FireFox et IE, mais pas dans Chrome. Y a-t-il quelque chose qui me manque?
Pourquoi avez-vous 'OnSuccess =" redirectionClick "' ce qui signifie qu'après avoir soumis à la méthode 'Requirement()', vous faites ensuite un autre appel ajax à la même méthode? –
Le 'redirectionClick' est un appel à l'action HttpGet dans le contrôleur. Pour afficher les données actualisées – gvk
Alors, pourquoi ne pas simplement utiliser l'option 'UpdateTargetId' et retourner la partie dans la méthode post? (semble une façon étrange de faire cela - faire 2 appels au lieu de 1) –