Ceci est mon contrôleur. J'ai un problème où je ne sais pas pourquoi ma chaîne d'entrée est toujours nulle. J'espère que quelqu'un pourra y jeter un œil et voir quelle est mon erreur.
[HttpPost] public JsonResult GetAllByName([FromBody]string Input) { JsonResult result = new JsonResult(null); result = this.Json(new { list = accountCodeData.GetAllByName(Input), }); return result; }
var Name; $("#AccountCodeName").change(function() { Name = $("#AccountCodeName").val(); }); var form_data = { "Input": Name, }; $("#AccountCodeName").autocomplete({ source: function(request, response) { $.ajax({ url: "/Configuration/AccountCodes/GetAllByName", method: "POST", data: form_data, contentType: "application/json", success: function(result) { console.log(result) } }); } });
3 Réponses :
Le problème est que vous ne définissez le form_data.Name
que lorsque la page se charge. Il n'est jamais mis à jour. Notez que ce n'est pas une valeur de référence.
Pour résoudre les problèmes, vous devez plutôt créer l'objet que vous fournissez aux données
juste avant d'envoyer la requête AJAX, comme ceci:
$("#AccountCodeName").autocomplete({ source: function(request, response) { $.ajax({ url: "/Configuration/AccountCodes/GetAllByName", method: "POST", data: { Input: $("#AccountCodeName").val() }, contentType: "application/json", success: function(result) { console.log(result); // note that you need to call 'response()' here providing the received data } }); } });
p>
Si vous mettez console.log ($ ("# AccountCodeName"). Val ());
dans la fonction de gestionnaire source
, qu'obtenez-vous?
Je peux obtenir la valeur AccountCodeNames si j'y place un console.log. D'une manière ou d'une autre, il n'est pas envoyé à mon contrôleur
Essayez data: JSON.stringify ({Input: $ ("# AccountCodeName"). Val ()}),
Toujours nul. Je l'ai essayé avec [FromBody] et sans [FromBody]. Les deux avaient nul
J'ai enfin trouvé une réponse
C'est comme ça que c'est censé être pour la saisie semi-automatique
Contrôleur
$("#AccountCodeName").autocomplete({ source: function (request, response) { console.log($("#AccountCodeName").val()) console.log(request.term) $.ajax({ url: "/Configuration/AccountCodes/GetAllByName", method: "POST", data: request, dataType: 'json', success: function (result) { console.log(result) } }); } });
Jquery
[HttpPost] public ActionResult GetAllByName(string term) { JsonResult result = new JsonResult(null); result = this.Json(new { list = accountCodeData.GetAllByName(term), }); return result; }
J'utilise jquery post avec les méthodes de post-action de base .net pour les modèles même
Voici un extrait de code qui peut vous aider
jquery
[HttpPost, Route("controller/action")] public async Task<IActionResult> action(string Name) { }
.net core back-end
$.ajax({ type: "POST", url: '/controller/action', data: { Name: $('#name').val()}, success: function (response) { window.location.href = '/'; } });
Le nom n'est initialisé nulle part?
Désolé, je viens de l'ajouter.
Essayez sans
[FromBody]
J'ai essayé cela aussi.
Quel plugin utilisez-vous pour
.autocomplete
?Saisie semi-automatique de Jquery