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!!!

De base async erreur de codage: Vous ne pouvez pas retourner une valeur à partir de la moyenne d'une fonction de rappel (comme 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