0
votes

Dois-je envoyé deux demandes à ActionResult?

J'ai un projet ASP.net MVC et en fonction des options de filtrage choisies par l'utilisateur, j'envoie différentes requêtes ajax au même résultat d'action, par exemple:

 data: { page: 2, filterUpdate: true }

D'autres écouteurs ont envoyé différents données, quelque chose comme:

 $(document).on("click", "#filter_reset_button", function () {
    var url = "/Admin/Index";

    ajaxRequest({
        url: url,
        type: "get",
        data: { reset: true },
        successCallback: function () {
            window.location.href = url;
        }
    });
});

et ainsi de suite. L'index ActionResult renvoie différentes listes d'éléments, en fonction des différentes options choisies dans les données et le code fonctionne parfaitement.

Un de mes collègues m'a dit que mon code envoie en fait deux requêtes get à l'AR à chaque fois, donc ce n'est pas efficace. Est-ce vrai? Et si c'est le cas, comment puis-je le refactoriser. faire une seule demande? Si je laisse window.location.href = url se séparer, le site ne charge pas la réponse du serveur.


1 commentaires

Ajoutez l'exemple de la méthode Index Action afin que d'autres puissent vous aider davantage.


3 Réponses :


0
votes

C'est la demande correcte 2 appelée.

Première requête lorsque vous appelez AJAX get à l'index d'action dans Admin Controller.

Deuxième requête lorsque vous définissez window.location.href = url , ce sera la même chose que vous saisissez / Admin / Index dans le navigateur.

Dans ce cas, vous n'avez besoin que de window.location.href = '/ admin / index? reset = true' dans la fonction de clic


6 commentaires

Alors, y a-t-il un moyen d'améliorer mon code? Parce que sans window.location.href, mon navigateur ne charge pas la réponse du serveur dans la fenêtre.


vous n'avez pas besoin d'ajax dans ce cas, vous ne pouvez utiliser que / admin / index? reset = true


Cela ne fonctionnerait malheureusement pas, nous avons une logique complexe dans l'Index AR et la réinitialisation est l'un des nombreux paramètres, donc fondamentalement, si je fais / admin / index? Reset = true, cela supprime une autre option qui était déjà enregistrée, mais si je le fais Ajax request et windows.location.href après cela, reset est enregistré dans l'AR et la nouvelle page se charge avec toutes les options précédemment enregistrées (reset = true inclus).


Vous devez renvoyer des données dans le résultat ajax et mettre à jour la base de l'interface utilisateur sur les données json


Pourriez-vous l'expliquer un peu plus en profondeur? Je ne suis pas sûr de comprendre comment faire ce que vous y avez écrit.


Dans l'action d'indexation, vous devez vérifier Request.IsAjaxRequest, si oui, vous devez retourner Json (Data = {vos données}), en fonction de succès d'ajax, vous itérez les données et les affichez dans l'interface utilisateur par jquery



0
votes

Oui, vous faites 2 requêtes en cliquant sur le bouton. Premier dans Ajax Get, deuxième dans le rappel réussi.

Mais pourquoi appelez-vous window.location.href = url; success rappel. ?

Si vous souhaitez mettre à jour la page après un clic, vous pouvez effectuer des mises à jour partielles de la page. Consultez ce message.


0 commentaires

0
votes

Vous pouvez voir le message ici à ce message

En fait, en cas de rappel réussi, vous devez modifier votre code en fonction du message ci-dessus


0 commentaires