-1

我正在尝试将一些数据发布到我的 ASP.Net MVC Web API 控制器并尝试在响应中取回它。我的帖子有以下脚本:

 $('#recordUser').click(function () {
  $.ajax({
    type: 'POST',
    url: 'api/RecordUser',
    data: $("#recordUserForm").serialize(),
    dataType: 'json',
    success: function (useremail) {
        console.log(useremail);
    },
    error: function (xhr, status, err) {

    },
    complete: function (xhr, status) {
        if (status === 'error' || !xhr.responseText) {
            alert("Error");
        }
        else {
            var data = xhr.responseText;
            alert(data);
            //...
        }
    }
 });
});

这个脚本的问题是,每当我尝试发布数据时,jQuery 都会返回“错误”而不是“成功”。

我已确保我的控制器没有问题。每当发出请求时,我都可以在调试模式下进入我的 api 方法,并且可以看到它正在从 POST 请求中获取数据并将其返回。这个控制器非常简单:

 public class RecordUserController : ApiController
 {
     public RecordUserEmailDTO Post(RecordUserEmailDTO userEmail)
     {
         return userEmail;
     }
 }

我不确定如何让 jQuery 打印出任何有用的错误消息。目前,当我尝试使用 Chrome 控制台调试 jQuery 代码时,它显示一个空的 xhr.responseText,“err”对象中没有任何内容,并且“status”设置为“error”,如您所见,这并不是很有帮助。

我尝试过的另一件事是直接从控制台运行以下代码:

$.ajax({
    type: 'POST',
    url: 'api/RecordUser',
    data: {"Email":"email@address.com"},
    dataType: 'json',
    success: function (useremail) {
        console.log(useremail);
    },
    error: function (xhr, status, err) {
        console.log(xhr);
        console.log(err);
        console.log(status);
        alert(err.Message);
    },
    complete: function (xhr, status) {
        if (status === 'error' || !xhr.responseText) {
            alert("Error");
        }
        else {
            var data = xhr.responseText;
            alert(data);
        }
    }
});

即使用相同的脚本而不实际单击按钮并提交表单。令人惊讶的是,这会得到正确的响应,我可以在控制台中看到我的数据打印出来。对我来说,这至少意味着我的 Web API 控制器工作正常,但让我不知道为什么它不能在单击按钮或提交表单时工作并进入“错误”而不是“成功”。

我没有在我的方法中发现任何错误,如果有人能在表格发布时帮助我得到回复,我会很高兴。

4

1 回答 1

-1

正如 Alnitak 所建议的那样,我正在使用complete回调success和回调errorcomplete从我的代码中删除解决了这个问题。

感谢阿尔尼塔克。

于 2013-07-13T00:51:37.767 回答