2013-06-26 40 views
0

我有一個控制器類,我從數據庫中獲取數據並將其返回給一個函數,現在我想在js中調用此函數並將數據設置爲顯示在頁面中的變量:在visual studio中調用JavaScript的類

我的代碼如下所示:exampleController.cs

namespace iSee.WebApiHse.Controllers 
{ 
    public class expController : StandardController 
    { 

     public expController(
      first myService, 
      ISystemSettings systemSettings, 
      IService myExpService) 
     { 
      _myService = MyService; 
      _systemSettings = systemSettings; 
      _myExpService = myExpService; 
     } 

     // GET data 
     public ActionResult Myexample(int id) 
     { 
      var elementIds = _systemSettings.ExpIds; 

      var myElements = CacheService.AllVisibleElements 
            .Where(x => elementIds.Contains(x.Id)).ToList(); 

      var container = _kpiContainerService.Find(id); 

      var result = _myService.MonthByContainer(myElements, container); 
      return AsJson(result); 
     } 
    } 
} 

這工作,我得到的數據。現在我有myExp.js,我需要在其中使用這些數據。我怎樣才能做到這一點?

感謝

回答

0

你想由JavaScript在瀏覽你的控制器工作?這不是個好主意。你應該通過模型來查看和使用它或阿賈克斯工作,並收到JSON數據

0

使用jQuery-ajax打電話給你的C#方法的一個例子:

// javascript 

var id = 987; 

$.ajax({ 
    url : '/expController/Myexample/', 
    type : 'GET', 
    data { id : id }, 
    dataType : 'json', // <-- tell jQuery to decode the JSON automatically 
    success : function(response){ 
     console.log(response); 
    } 
}); 

這會打電話給你的方法,傳遞的價值id,那麼它會將JSON解碼爲response對象。

對於簡單的Javascript ajax(沒有jQuery)請參閱MDN Ajax

0

您需要向行動Myexample發出請求。通常,這是通過AJAX完成:

在你看來,你可以有:

function makeAJaxCall(idToSend) { 
    $.ajax({ 
     url: '@Url.Action("exp", "Myexample")', 
     data: { id : idToSend }, 
     type: "POST", 
     success: function(data) { 
      $("#HTMLElement").val(data.YourData); 
     } 
    }); 
} 

你的反應會回來的data變量如果AJAX調用成功。我已經提供了一個示例來向您展示如何使用HTTLE元素更改HTML元素的值。

要調用你能做的功能:

makeAjaxCall(100); 
0

您可以在var加載JSON數據,並將其傳遞給函數在expjs.js,如:

var data = data_from_ajax(); 
exp_js_function(data); 

data_from_ajax()將獲得JSON來自您的控制器和操作方法的數據。

請考慮以此爲出發點,而不是作爲一個複製粘貼的解決方案