【问题标题】:Why is my Ajax POST request returning an error before the WebApi has responded?为什么我的 Ajax POST 请求在 WebApi 响应之前返回错误?
【发布时间】:2014-11-10 16:57:34
【问题描述】:

抱歉,如果这个问题已经得到解答,但我搜索了许多相关术语,没有任何乐趣。

我有一个带有 Post 方法的简单 WebApi 控制器:

[HttpPost]
public string Post()
{
    string thing = "hi";
    var jSonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
    var output = jSonSerializer.Serialize(thing);
    return output;
}

我还有一个对上述 Post 方法的 Ajax 调用,在单击按钮时执行:

$.ajax({
    type: 'POST',
    url: 'http://localhost:58492/WebApi/api/PhysicalActivity',
    dataType: 'json',
    success: function (response) {
        console.dir(response.status);
    },
    error: function (thing) {
        alert("Ajax call to PhysicalActivity/Post failed");
    }
});

请求肯定会通过 WebApi post 方法,因为我设置了一个断点,并且一直被命中。

但是,它没有收到成功的响应。正在命中 Ajax 错误回调。

事实上,我还在 Ajax 错误回调中设置了一个断点,并且该断点在 post 方法断点之前被命中 - 所以 Ajax 调用在进入 Post 方法之前就出错了。

我尝试从 Post 方法返回一个字符串,并在 Ajax 调用中设置 dataType = 'text',但这并没有什么区别。

我也尝试过从 Post 方法显式返回一个 HttpResponseMessage 对象。没有区别。

当我在 Ajax 请求中将 contentType 设置为 'text/plain' 并将数据设置为 'hello' 时,调用甚至没有到达 Post 方法,并且我收到 405 响应('method not allowed') .

我做错了什么??

【问题讨论】:

  • 尝试在浏览器中使用 (F12) 开发者工具并检查“url”,它可能会覆盖它的路由..
  • 您是否通过在返回语句上创建断点来检查您的 Post 方法是否返回某些东西

标签: jquery ajax json asp.net-web-api


【解决方案1】:

尝试使用 jsonp 进行跨域 ajax 调用 http://learn.jquery.com/ajax/working-with-jsonp/

【讨论】:

  • 您可以提供更多关于什么/为什么这是跨源的解释,以及 JSONP 如何帮助解决它。这只不过是一个“RTFM”答案
猜你喜欢
  • 1970-01-01
  • 2016-05-12
  • 1970-01-01
  • 2022-01-19
  • 2019-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
相关资源
最近更新 更多