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:
3 Réponses :
[HttpGet] public string AjaxThing() { return Json("ajax return",JsonRequestBehavior.AllowGet); } Please use change the function as shown above, it will work
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
[HttpGet] public ActionResult AjaxThing() { return Json("ajax return", JsonRequestBehavior.AllowGet); }
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(); }); });
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 êtreurl: @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&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