【问题标题】:C# Post AJAX empty json resultC# 发布 AJAX 空 json 结果
【发布时间】:2020-12-08 12:37:08
【问题描述】:

我发出 POST ajax 请求以执行操作并返回结果而不重新加载页面。
为此,我使用 JSON 结果,问题是当我的操作“foo.DoSyncAction(id)”需要一段时间才能执行时,返回的消息为空。
比如引发异常时,异常被捕获,但他的消息为空。

当没有抛出异常时也会发生同样的情况,“actionResult”为空。
如果我使用耗时较少的操作,则返回的消息不为 null 或为空。
并且在调试模式下不会发生,返回到我的页面的消息不为空。
我想我忘记了或者我做错了什么,但我不知道哪里出了问题。

[HttpPost]
public JsonResult SomeAction(int id)
{
    try
    {
        Foo foo = new Foo();
        var actionResult = foo.DoSyncAction(id);

        return Json(new { ok = true, data = actionResult }, JsonRequestBehavior.AllowGet); ;
    }
    catch (Exception ex)
    {

        return Json(new { data = ex == null ? "null ex" : (string.IsNullOrEmpty(ex.Message) ? "this exception is empty" : ex.Message) }, JsonRequestBehavior.AllowGet);
    }
}

我的 AJAX 查询:

$.ajax({
    url: '@Url.Action("SomeAction", "MyController")',
    dataType: 'json',
    data: { id: myID },
    type: 'POST',
    success: function (response) {
        if (response.ok) {
            // When everything is ok
            console.log(response.data);
        } else {
            // When an exception is thrown
            console.log("An error occurred :  " + response.data);

        }
    },
    error: function (error) {
        console.log("An error occurred :  " + error.responseText);
    }
});

这是一个类似情况的例子:dotnetfiddle.net/cG2L0u 我使用 Sagnalrac 示例等待 10 秒,然后我的问题就出现了。不再显示项目列表,并且 console.log 返回一个空字符串。 我正在使用带有 .NET 4.8 的 ASP MVC 5

【问题讨论】:

  • 听起来您超出了客户端 AJAX 请求的请求超时时间 - 这是因为请求花费了太长时间而停止并且您没有请求正文(代码将继续在您的示例中的服务器上运行)。这是怎么回事?
  • 浏览器实际发送的请求是什么?如果你在控制器中设置断点,它会被命中吗?
  • 这可能有助于弄清楚:stackoverflow.com/questions/3543683/…
  • 在你的 post 方法开始的地方打一个断点,观察 id 是否来自前端
  • 感谢您的回答。我用断点试过了,效果很好。我检索 id,并将成功或异常消息返回给我的客户。我会尝试看看是否可以在 ajax 超时方面获得任何线索。

标签: c# jquery .net ajax asp.net-mvc


【解决方案1】:

我解决了我的问题,但我仍然有一些误解。

我的方法返回一个与执行该方法的帐户系统相关的异常(这就是为什么在调试中它可以工作,而在 Web 服务器上却不能,因为使用的帐户不同)。

奇怪的是我的方法确实抛出了一个异常,我什至设法捕获它并通过邮件发送它。但是当控制器捕获到异常时,她是空的或 null。 我会尝试仔细研究一下这个问题。

一旦我解决了问题,我尝试添加 2 分钟的超时,没有出现问题(我认为在示例中,dotnetfiddle 的配置与我的不同,这就是为什么没有出现异常的原因)。

【讨论】:

    猜你喜欢
    • 2012-02-09
    • 2013-12-15
    • 2013-07-20
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多