状态代码为 200,但仍然会在 ajax 调用 MVC web API 时触发错误事件

Status Code is 200 but still error event fires in ajax call to MVC web API

我正在使用 [FromBody] 在基于 MVC 的网络 api 上发布一些字符串,它工作正常。数据正在添加到数据库中。我的控制器的 Action 方法类型是 HttpResponseMessage,我正在返回此响应

HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, "value"); 
return response;

但错误事件正在触发而不是成功。

这是 ajax 调用。

$.ajax({
    type: 'POST',
    url: 'http://businessworxapi.azurewebsites.net/api/SaveTemplate',
    contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
    dataType: "text json",
    data: "RetailerID=" + encodeURIComponent(retailerid) + "&SvgContent=" +
            encodeURIComponent(stringsvg) + "&Description=" +
            encodeURIComponent(Description) + "&TemplateName=" +
            encodeURIComponent(Name),
    beforeSend: function () {
    },
    success: function (response) {
        alert("Added");
    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.responseText);
    }
});

给我一些解决这个问题的建议。

我找到了这个问题的答案。需要设置两个东西。 首先是在 MVC Web Api 的 web.config 中设置自定义 header 的值,即 Access-Control-Allow-Origin(该值应该是原点 URL 从哪里 API 将被调用)。第二个更重要。 ajax 调用中的 "datatype" 是 "json",因此它期望来自 API 的有效 JSON 结果,而从 API 返回的结果只是一个具有代码 200 和字符串 "value" 的 HTTPResponseMessage。我发现错误是parsingerror。所以在这里我返回了一个有效的 json object 而不是字符串 "value".

HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK , new { responseValue = "Value" });
return response;

它对我有用,并且触发了 ajax 调用的成功事件。宾果:)