我尝试使用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,“完成”: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“:{}}
答案 0 :(得分:0)
JSON绝对不是xml。但是我认为dataType
区分大小写。或更好地使用$.getJSON
:https://api.jquery.com/jquery.getjson/
无论如何,您应该检查一下ajax调用,因为您似乎没有正确使用参数。
答案 1 :(得分:0)
您忘记在API端设置content-type: application/json
标头。
我假设错误是在客户端。
您应该使用JSON()
而不是OK()