у объекта json отсутствует корневой элемент при возврате из API - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь вызвать метод в api, используя jquery, но получаю сообщение об ошибке

Ошибка синтаксического анализа 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, "закончил" ложь "dateLastInvoked": "2018-09-09T04: 07: 40,8996335", "название": "Jobb номер 3 "," description ":" Enda en jobb "," items ": [{" jobId ": 3," comment ":" løst gåten " "пунктов": [{ "timeIntervalId": 3, "dateEnd": NULL, "состояние": 2, "differenceRaw": +201,21893158, "различие": 3.4, "идентификатор": 4, "UID":" 6ad40e18-7e18-489f-9503-da25eac533a1" , "активный": правда, "dateCreated": "2018-09-09T04: 07: 41,1398231", "помощник": {}}, { "timeIntervalId": 3, "dateEnd ": NULL," состояние ": 3," differenceRaw ": +201,21897233333334," разница ": 3,4," идентификатор ": 5," UID ":" 2e3bad04-e454-4241-8aa4-0f6a124e6837" , "активный": правда, "dateCreated": "2018-09-09T04: 07: 41,1398254", "помощник": {}}], "differenceRaw": +402,43795291833334, "различие": 6.7, "состояние": 2, "идентификатор": 3,» UID ":" 82de2d44-8de7-49c0-8674-08e8b579c4ae», "активный": правда, "dateCreated": "2018-09-09T04: 07: 41,0085169", "помощник": {}}], "timeSpentRaw": +402,43801081333334, "timeSpent": 6.7, "состояние": 2, "работает": правда, "ID": 3, "UID": "cbd16771-3a1b-409f-9e67-515d03eb5116", "активный": правда, "dateCreated ":" 2018-09-09T04: 07: 40,8996351" , "помощник": {}}

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

Вы забыли установить заголовок content-type: application/json в конце API.

Я предполагаю, что ошибка на стороне клиента.

Вы должны использовать JSON() вместо OK()

0 голосов
/ 09 сентября 2018

JSON определенно не является XML. Но я думаю, dataType чувствителен к регистру. Или лучше использовать $.getJSON: https://api.jquery.com/jquery.getjson/

В любом случае, вам следует проверить ваш ajax-вызов, так как кажется, что вы неправильно используете параметры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...