javascriptからコントローラメソッドを呼び出そうとしていますが、これを正しく実行するには問題があるようです。私は非常にjavascriptでの経験はほとんどありませんし、stackoverflowからこれを行う方法の他の例に従っていますが、私はまだいくつかの問題を抱えています。JavascriptエラーからASP.NET MVC 5呼び出しコントローラメソッド
基本的には、javascriptオブジェクトの.dataタグを、コントローラのメソッドから返された文字列に設定します(このメソッドは、SQL Server関数を実行するWebサービスを呼び出します)。このメソッドは、関数で使用される1つのパラメータを渡す必要があります。
コードは以下である:
JavaScriptコード
for (var i = 0; i < stats.length; i++)
{
var stat = stats[i].data('id');
var color = CallService(stat);
this.node.fill = color;
}
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');
}
});
}
コントローラメソッド
[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);
}
コントローラはNodeControllerと呼ばれ、私はurl:ajaxの呼び出しを参照しています。
基本的に何が起こっているのですか?ページを実行すると、最初にthis.node.fillをnull値に設定できないというエラーが表示されますTHEN私はエラーが発生しました。私はJQueryからエラーメッセージを受け取る前にthis.node.fillでエラーが発生した場合、メソッドが正しい順序で呼び出されているかどうかは正直言ってもわかりません。
すべてのヘルプまたは提案は大変ありがとうございます。
基本コントローラの名前とコントローラを書くために必要はありません:あなたは(成功 'のように:')コールバック関数の途中から値を返すことができないが、長い起こるようにあなたの機能が終了した後。 @Igorは以下のいくつかの正しい提案をしています。 –