0
votes

L'appel Ajax ne reconnaît pas l'URL

J'essaie de passer un appel ajax dans ma page Razor. À partir de maintenant, ma méthode de contrôleur est censée renvoyer la chaîne "ajax return" et ensuite la rendre à la balise div appropriée. Ceci est simplement un test. Je ne peux pas obtenir l'appel ajax pour frapper ma méthode dans le code derrière. Merci d'avance pour toute contribution!

ajax:

public string AjaxThing() 
{
    return "ajax return";
}

cshtml:

<div id="test">
</div>
<div class="form-group">
    <button id="clickMe" class="btn">Click me</button>
</div>

code derrière:

function test() {
    $.ajax({
        type: "GET",
        url: "@Url.Action("AjaxThing", "Posts")";
        data: "Andrew",
        success: function (response) {
            $("#test").html(response.data);
        }
    });
}

$("#clickMe").on("click", test);

Présentation de la solution:

Solution


11 commentaires

Hmmmm ... vous n'appelez pas du tout la fonction de test ...


Oh dang, j'ai laissé une ligne de mon message sur un accident. Il est mis à jour maintenant.


Qu'est-ce qui est écrit dans votre journal des outils de développement?


url: "@Url.Action("AjaxThing", "Posts")"; - cette syntaxe ne semble pas correcte comme vous pouvez le voir avec la mise en évidence. Peut-être que cela devrait être url: @Url.Action("AjaxThing", "Posts");


@Xerillio J'ai juste essayé ça et ça n'a eu aucun effet.


@AthanasiosKataras Je n'ai jamais utilisé le journal des outils de développement, alors laissez-moi savoir comment faire et je vous répondrai.


@AthanasiosKataras dans les outils de développement de chrome, l'url se lit comme suit: url: /Status/Posts?action=AjaxThing&amp;controller=Posts


Et le statut de la demande? 404 ou 500?


Y a-t-il des erreurs dans l'onglet de la console?


@AthanasiosKataras 404


Voir stackoverflow.com/q/46410716/27989


3 Réponses :


0
votes
[HttpGet]
public string AjaxThing() 
{
    return Json("ajax return",JsonRequestBehavior.AllowGet);
}
Please use change the function as shown above, it will work

2 commentaires

Hmm, donc ça ne me permettra pas de dire ça. Json doesnt exist in the current context l'erreur Json doesnt exist in the current context . Est-ce parce que j'essaye d'appeler cette méthode «pas» à partir d'un contrôleur? J'ai tout cela placé à l'intérieur du code derrière la page du rasoir.


Install-Package Newtonsoft.Json -Version 12.0.3 sur votre projet VS. il résoudra le problème de Json



0
votes
[HttpGet]
        public ActionResult AjaxThing()
        {
            return Json("ajax return", JsonRequestBehavior.AllowGet);
        }

0 commentaires

0
votes

Deviner. La raison pour laquelle il n'a pas été publié correctement était que mon contrôleur était mal configuré. Au lieu d'hériter de 'Controller', j'ai mis à jour vers 'ControllerBase', ce qui a permis à la publication de passer. J'ai également mis à jour mon appel ajax pour ressembler à ceci:

$(document).ready(function () {
    $('#@formId button').on("click", function (e) {

        var CommentVM = {
            PostId: parseInt($("#@postId").val()),
            Content: $("#@commentId").val()
        }

        $.ajax({
            contentType: "application/json; charset=utf-8",
            type: "POST",
            url: "/PostComment",
            data: JSON.stringify(CommentVM),
            dataType: "json",
            async: true,
            success: function (data) {
                console.log("Success");
            },
            error: function (hxr, status, error) {
                console.log("ERROR");
            }
        });
        e.preventDefault();
    });
});


0 commentaires