J'essaie de démarrer avec les appels ASP.NET MVC Ajax.
Manette:
public class AjaxTestController : Controller
{
//
// GET: /AjaxTest/
public ActionResult Index()
{
return View();
}
public ActionResult FirstAjax()
{
return Json("chamara", JsonRequestBehavior.AllowGet);
}
}
Vue:
<head runat="server">
<title>FirstAjax</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var serviceURL = '/AjaxTest/FirstAjax';
$.ajax({
type: "POST",
url: serviceURL,
data: param = "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
alert(data);
}
function errorFunc() {
alert('error');
}
});
</script>
</head>
J'ai juste besoin d'imprimer une alerte avec la méthode du contrôleur renvoyant des données. Au-dessus du code, imprimez simplement "chamara" à mon avis. Une alerte ne se déclenche pas.
METTRE À JOUR
J'ai modifié mon contrôleur comme ci-dessous et il commence à fonctionner. Je n'ai pas une idée claire de la raison pour laquelle cela fonctionne maintenant. Quelqu'un s'il vous plaît expliquer. Le paramètre "a" n'est pas lié je l'ai ajouté car je ne peux pas ajouter deux méthodes avec le même nom de méthode et les mêmes paramètres.Je pense que ce n'est peut-être pas la solution mais ça fonctionne
public class AjaxTestController : Controller
{
//
// GET: /AjaxTest/
[HttpGet]
public ActionResult FirstAjax()
{
return View();
}
[HttpPost]
public ActionResult FirstAjax(string a)
{
return Json("chamara", JsonRequestBehavior.AllowGet);
}
}
c#
jquery
asp.net
asp.net-mvc
asp.net-mvc-2
Chamara
la source
la source
{"name":"chamara"}
. puis essayez de lire commedata['name']
Réponses:
Après la mise à jour que vous avez effectuée,
Auparavant, vous ne renvoyiez que JSON au navigateur sans afficher de code HTML. Maintenant, il a une vue HTML rendue où il peut obtenir vos données JSON.
Vous ne pouvez pas rendre directement JSON ses données simples et non HTML.
la source
Supprimez l'attribut de données car vous n'êtes
POSTING
rien pour le serveur (votre contrôleur n'attend aucun paramètre).Et dans votre méthode AJAX, vous pouvez utiliser
Razor
et utiliser@Url.Action
plutôt qu'une chaîne statique:Depuis votre mise à jour:
la source
Utilisez un rasoir pour modifier dynamiquement votre URL en appelant votre action comme ceci:
la source
Premièrement, il n'est pas nécessaire d'avoir deux versions différentes des bibliothèques jquery dans une page, soit "1.9.1" ou "2.0.0" est suffisant pour faire fonctionner les appels ajax.
Voici votre code de contrôleur:
Voici à quoi devrait ressembler votre vue:
la source
Si vous avez juste besoin d'appuyer sur la méthode C # dans votre appel Ajax, il vous suffit de passer deux types de sujets et une URL si votre requête est obtenue, il vous suffit de spécifier l'URL uniquement. veuillez suivre le code ci-dessous, cela fonctionne bien.
Code C #:
Code de script Java si Get Request
Code Java Script si Post Request et aussi [HttpGet] vers [HttpPost]
Remarque: Si vous FirstAjax dans le même contrôleur dans lequel votre View Controller, vous n'avez pas besoin du nom du contrôleur dans l'URL. comme
url: 'FirstAjax',
la source
C'est pour votre question UPDATE.
Comme vous ne pouvez pas avoir deux méthodes avec le même nom et la même signature, vous devez utiliser l'attribut ActionName:
METTRE À JOUR:
Et veuillez consulter ce lien pour plus d'informations sur la façon dont une méthode devient une action. Très bonne référence cependant.
la source
Vue;
Méthode du contrôleur;
la source
au lieu d'
url: serviceURL,
utiliseret passez-vous 2 paramètres à successFunc?
la source
Ajoutez «JsonValueProviderFactory» dans global.asax:
la source