0

Je souhaiterais utiliser un rappel ajax pour un formulaire spécifique qui utilise un ajax discret. L'appel ajax a pas de problème avec ce formulaire standard en utilisant ajax discret:Accès à un élément de formulaire dans un événement ajax discret

<form action="/xyz" data-ajax="true" data-ajax-method="POST" id="someformid" method="post"> 
    <input type="text" name="bla" /> 
    <button>submit</button> 
</form> 

Ma première approche était la suivante:

var form = $("#someformid"); 
$(document).ajaxComplete(function (e, request, options) { 
    // is not hitting here 
}); 

Mais cela ne semble pas fonctionner. Cette approche frappe le gestionnaire, mais pas seulement pour la forme souhaitée. Mais pour tous les événements ajaxComplete.

var form = $("#someformid"); 
form.submit(function (eevent) { 
    $(document).ajaxComplete(function (e, request, options) { 
     // this hits ok. but not just for this form 
    }); 
}); 

La prochaine option serait d'utiliser le "data-ajax-success". mais cela ne semble pas fournir le contexte de la forme. Donc la question: Comment connecter un événement ajaxComplete pour un seul formulaire exclusivement.

Note: Je voudrais éviter les solutions de contournement comme la correspondance de l'URL ou l'ajout d'un ID unique à la requête.

Merci!

+0

Je voudrais essayer de donner la ''

Répondre

0

Des .ajaxComplete() docs:

À partir de jQuery 1.8, la méthode .ajaxComplete() ne doit être attaché à documenter. Tous les gestionnaires ajaxComplete sont appelés, quelle que soit la demande Ajax terminée. Si vous devez différencier les demandes , utilisez les paramètres transmis au gestionnaire. Chaque fois qu'un gestionnaire ajaxComplete est exécuté, il reçoit l'objet événement, l'objet XMLHttpRequest et l'objet de paramètres utilisé dans la création de la requête. Par exemple, vous pouvez limiter le rappel à uniquement les événements de manipulation portant sur une URL particulière:

Ainsi, la façon dont je lis ceci est, si vous savez que vous allez exécuter une URL spécifique (votre script de traitement php), alors vous pouvez passer cette URL dans les paramètres de la méthode .ajaxComplete() .... (dans votre cas, "/ xyz")

$(document).ajaxComplete(function(event, xhr, settings) { 
    if (settings.url === "/xyz") { 
    $(".log").text("Triggered ajaxComplete handler. The result is " + 
     xhr.responseHTML); 
    } 
}); 
Questions connexes