0

我正在使用 [FromBody] 在基于 MVC 的 Web 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);
    }
});

建议我解决这个问题。

4

1 回答 1

0

我找到了这个问题的解决方案。需要设置两个东西。首先是在 MVC Web Api 的 web.config 中设置自定义标头的值,即 Access-Control-Allow-Origin(该值应该是调用 API 的源 URL)。而第二个更重要。ajax 调用中的“数据类型”是“json”,因此它期望来自 API 的有效 JSON 结果,而从 API 返回的结果只是具有代码 200 和字符串“值”的 HTTPResponseMessage。我发现错误是解析错误。所以在这里我返回了一个有效的 json 对象而不是字符串“value”。

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

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

于 2016-01-21T15:57:48.107 回答