ASP.NET MVC 5 l'appel de la méthode du contrôleur d'Erreur Javascript
Je suis tente d'appeler une méthode de contrôleur de javascript et je semble avoir de la difficulté à obtenir ce à exécuter correctement. J'ai très peu d'expérience avec javascript, et qui ont suivi d'autres exemples de la façon de le faire à partir de stackoverflow mais je suis encore avoir quelques questions si quelqu'un peut aider ce serait fantastique.
Fondamentalement, ce que je suis en train de faire est de définir un .les données de la balise sur un objet javascript pour la chaîne de caractères retournée par une méthode du contrôleur (cette méthode appelle un service web qui exécute une fonction SQL Server). La méthode doit être transmis un paramètre qui est utilisé dans la fonction.
Le code est ci-dessous:
Code Javascript
for (var i = 0; i < stats.length; i++)
{
var stat = stats[i].data('id');
var color = CallService(stat);
this.node.fill = color;
}
Méthode JQuery
function CallService(id) {
$.ajax({
url: '@Url.Action("CallService", "NodeController")',
type: 'GET',
dataType: 'json',
cache: false,
data: { 'id': id },
success: function (color) {
return color;
},
error: function () {
alert('Error occured');
}
});
}
Méthode De Contrôleur
[HttpGet]
public JsonResult CallService(string id)
{
var idNum = Convert.ToInt32(id);
var StationService = new getStationStatus.Service1SoapClient("Service1Soap");
string color = StationService.getStationStatus(idNum);
return Json(color, JsonRequestBehavior.AllowGet);
}
le contrôleur est appelé le NodeController - ce qui est à quoi je fais référence dans l'url: appel d'ajax.
Fondamentalement ce qui se passe est que lorsque je lance la page, j'ai d'abord obtenez une erreur indiquant qu'il est impossible de définir ce.nœud.remplissez une valeur null PUIS je reçois l'alerte qu'une erreur s'est produite - comme je l'ai dit je suis assez inexpérimenté avec le javascript donc je suis honnêtement même pas sûr si c'est l'appel de la méthode dans le bon ordre, si j'obtiens une erreur sur ce point.nœud.remplir avant que je reçoive le message d'erreur de JQuery.
Toute aide ou suggestions sont grandement appréciés!!!
success:
) comme cela arrive de temps après votre fonction a quitté. @Igor a quelques corriger les suggestions ci-dessous.OriginalL'auteur jhinx | 2015-01-05
Vous devez vous connecter pour publier un commentaire.
Si votre contrôleur de classe est
NodeController
, utilisez uniquement un "Nœud" pour le nom du contrôleur dansUrl.Action
:Vous ne pouvez pas synchrone de renvoyer une valeur à partir d'une fonction d'asynchrone. Passer un rappel à
CallService
d'être appelé sur le succès ou l'utilisation de jquery promesse - http://api.jquery.com/promise/Nous ne savons pas ce
this.node.fill
est, ni où il est défini. Probablement,this.node
n'est pas définie au moment de la cession est exécutée.OriginalL'auteur Igor
Vous n'avez pas besoin d'écrire contrôleur nom du contrôleur de
Vous avez manqué l'intégralité de "retour d'une valeur à partir de la moyenne d'une fonction async" problème 🙂
OriginalL'auteur Tushar