0

我有一个控制器类,我从数据库中获取数据并在函数中返回它,现在我想在 js 中调用此函数并将数据设置为变量以显示在页面中:

我的代码看起来像: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知道我需要在其中使用这些数据。我怎样才能做到这一点?

谢谢

4

5 回答 5

2

您需要向$ajax(..)控制器执行(jquery 语法)请求以从服务器传递和获取计算信息。

为此,您将要调用的控制器方法必须公开以供 HTTP 访问。

更多详情:

如何从javascript调用控制器方法

于 2013-06-26T07:16:10.993 回答
0

您想在 View by JavaScript 中使用您的控制器吗?这不是个好主意。您应该将 Model 传递给 View 并使用它或 ajax 并接收 json-data

于 2013-06-26T07:16:51.163 回答
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

于 2013-06-26T07:17:16.390 回答
0

您需要向 Action 发出请求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我提供了一个示例来向您展示如何使用IDHTMLElement 更改 HTML 元素的值。

要调用该函数,您可以执行以下操作:

 makeAjaxCall(100);
于 2013-06-26T07:17:27.047 回答
0

您可以在 a 中加载 JSON 数据var并将其传递给 in 中的函数expjs.js,如下所示:

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

data_from_ajax()将从您的控制器和操作方法接收 JSON 数据。

请将此视为起点,而不是复制粘贴解决方案

于 2013-06-26T07:20:33.473 回答