状态代码为 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 调用的成功事件。宾果:)
我正在使用 [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 调用的成功事件。宾果:)