AJAX对异步方法的调用是成功的,但返回的数据是未定义的

时间:2017-06-01 18:41:48

标签: javascript .net ajax asynchronous

我有一个控制器,当我调试.WriteLine时,我正在返回的数据就像它应该的那样。我对.NET中的异步非常新,但是在控制器和视图之间似乎有些东西丢失了,因为AJAX调用是成功的,但是当我尝试使用它时,我返回的数据是未定义的。

以下是控制器中的方法。这里的数据是正确的,据我所知,这种方法完全正常。

[HttpPost]
    public async Task<JsonResult> getServerProcesses(string server)
    {
        HttpClient client = new HttpClient();
        QueryPair<JToken, JToken> processes = new QueryPair<JToken, JToken>();

        using (client)
        {
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            var processesRequest = ProcessURLAsync(baseUrl + "activityMonitor/" + server + "/processes", client);
            HttpResponseMessage response = await processesRequest;
            var jsonString = response.Content.ReadAsStringAsync().Result;
            JObject json = JObject.Parse(jsonString);
            var data = json.SelectToken("Processes" + ".Data");
            var columns = json.SelectToken("Processes" + ".Columns");
            processes.Data = data;
            processes.Columns = columns;

            Debug.WriteLine(data);
        }

        return Json(processes);
    }

正如您所看到的,我使用警报来确认成功,但是当我尝试诸如获取长度之类的内容时,它表示未定义。即使我只是尝试console.log它所说的对象是未定义的。

$.ajax({
        type: 'POST',
        url: '/Home/getServerProcesses',
        data: {'server': server},
        success: function(data) {
            console.log("Length: " + data.length);
            alert("oui");
            $('#server-name').empty();
            $('#server-name').append(server);
            var dataTable = new google.visualization.DataTable();
            for (var i = 0; i < pmdfields.length; i++) dataTable.addColumn('string', pmdfields[i]);
            for (var i = 0; i < data.length; i++) dataTable.addRow(data[i]);
            var table = new google.visualization.Table(document.getElementById('processTable'));
            table.draw(dataTable, {showRowNumber: true, width: '100%', height: '100%'});
        },
        error: function(data) {
            alert('ajax getServerProcesses POST request error');
        }
    });

来自API。在响应下,它有一个空的JSON对象,里面装满了空数组。我怀疑错误是在我的控制器类中:Network tab

Preview

0 个答案:

没有答案