在ajax中没有收到Web API HttpResponseMessage?

时间:2013-12-04 10:11:07

标签: asp.net-mvc jquery asp.net-mvc-5 asp.net-web-api2

首次尝试使用Web API并且有点困惑。

我在Web Api中设置了一个基本删除:

public HttpResponseMessage Delete(string id)
{
    HttpResponseMessage response = new HttpResponseMessage();
    response.ReasonPhrase = "User successfully deleted";
    response.StatusCode = HttpStatusCode.OK;

    return response;
}

并通过jquery ajax调用它:

deleteUser: function (data) {
    var self = this;
    $.ajax({
        type: "DELETE",
        url: urlPath + data.Id,
        success: function (response) {
            alert("Success: " + response.status + " : " + response.statusText);
        },
        error: function (response) {
            alert("Error: " + response.status + " : " + response.statusText);
        }
    });
}

这有效... Chrome开发人员工具说StatusCode:200用户已成功删除。

不幸的是,来自ajax成功的警报只是说“成功:未定义:未定义”,并且当在Chrome中破坏成功功能时,响应变量为空白

如何在ajax调用中检索状态代码/消息以显示在屏幕上?

由于

1 个答案:

答案 0 :(得分:2)

jQuery的ajax.success回调函数的参数是:

function(PlainObject data, String textStatus, jqXHR jqXHR)

如您所见,第一个参数是原始响应主体。如果您需要HTTP状态代码和文本,请使用jqXHR(第三个参数)数据:

success: function(data, status, xhr)
         {
         alert("Success: " + xhr.status + " : " + xhr.statusText);
         }