从api返回时,json对象缺少根元素

时间:2018-09-09 05:28:18

标签: c# jquery asp.net-core

我尝试使用apijquery中调用方法,但出现错误

  

XML解析错误:找不到根元素

API方法:

[HttpGet]
public async Task<IActionResult> GetJob(int id)
{
    var result = await this.DB.GetJob(id);

    return Ok(result);
}

JQuery:

function InvokeAjax (controller, action, method, query = {}, body = {}, callback) {
    let url = "/Secure/" + controller + "/" + action;

    if (query.length > 0) {
        let tmp;
        let i = 1;

        query.each(function (index) {
            if (i === 1) {
                tmp = "?";
            }
            else {
                tmp += "&";
            }

            tmp = this.key + "=" + this.value;

            i++;
        });

        url += tmp;
    }

    $.ajax({
        type: method.toUpperCase(),
        url: url,
        data: JSON.stringify(body),
        dataType: "JSON",
        contentType: "application/json",
        success: function (result) {
            if (callback !== null && callback !== "undefined") {
                callback(result);
            }
        }
    });
}

该错误表明xml解析错误,这是问题吗?我已将JSON定义为返回类型,所以我不知道。

这是从api返回的内容:

  

{“ clientId”:3,“完成”:false,“ dateLastInvoked”:“ 2018-09-09T04:07:40.8996335”,“名称”:“ Jobb   nr 3“,” description“:” Enda en jobb“,” items“:[{” jobId“:3,” comment“:”løst   gåten“,” items“:[{” timeIntervalId“:3,” dateEnd“:null,” state“:2,” differenceRaw“:201.21893158,” difference“:3.4,” id“:4,” uId“:” 6ad40e18-7e18-489f-9503-da25eac533a1“,”活动“:true,” dateCreated“:”“ 2018-09-09T04:07:41.1398231”,“ helper”:{}},{“ timeIntervalId”:3,“ dateEnd “:null,”状态“:3,” differenceRaw“:201.21897233333334,” difference“:3.4,” id“:5,” uId“:” 2e3bad04-e454-4241-8aa4-0f6a124e6837“,” active“:true, “ dateCreated”:“ 2018-09-09T04:07:41.1398254”,“ helper”:{}}],“ differenceRaw”:402.43795291833334,“ difference”:6.7,“ state”:2,“ id”:3,“ uId“:” 82de2d44-8de7-49c0-8674-08e8b579c4ae“,”活动“:true,” dateCreated“:” 2018-09-09T04:07:41.0085169“,” helper“:{}}],” timeSpentRaw“: 402.43801081333334,“ timeSpent”:6.7,“ state”:2,“ running”:true,“ id”:3,“ uId”:“ cbd16771-3a1b-409f-9e67-515d03eb5116”,“ active”:true,“ dateCreated “:” 2018-09-09T04:07:40.8996351“,” helper“:{}}

2 个答案:

答案 0 :(得分:0)

JSON绝对不是xml。但是我认为dataType区分大小写。或更好地使用$.getJSONhttps://api.jquery.com/jquery.getjson/

无论如何,您应该检查一下ajax调用,因为您似乎没有正确使用参数。

答案 1 :(得分:0)

您忘记在API端设置content-type: application/json标头。

  

我假设错误是在客户端。

您应该使用JSON()而不是OK()