【问题标题】:error in ajax request to action controller asp mvc对动作控制器asp mvc的ajax请求错误
【发布时间】:2016-11-26 09:05:13
【问题描述】:

我有一个按钮,当你点击它时 它运行将 id 发送到控制器的 ajax 现在控制器做了一些事情,它在服务器端没有错误,, 但是在控制器的操作中,我有带有restsharp的代码 发送请求以休息网络服务也可以正常工作(), 但这部分()在 foreach 中并运行 5 或 ... 时间 当我做这件事时,有时 ajax 需要很长时间并且 ajax 代码的错误部分运行 我该怎么办?

ajax 代码:

             $(document).on("click", "#btn-submit", function () {
                    $.ajax({
                        type: 'POST',
                        url: '/Panel/CheckRefOrderCode',
                        data: JSON.stringify({
                            factorrefid: $("#ref-check").val()
                        }),
                        contentType: 'application/json; charset=utf-8',
                        dataType: 'json',
                        success: function (result) {
                            if (result.DntSuccess) {
                            } else {
                            }
                        },
                        error: function () {
                        }
                    });
            });

动作代码

                        foreach(string s in str)
                    {
                        var client = new RestClient("http://**.com/api/v1/orders/status?support_code=71GD4A");
                        var request = new RestRequest(Method.POST);
                        request.AddHeader("token", "15befa43");
                        IRestResponse response = client.Execute(request);

                        RefOrderJsonViewModel.RefOrderJson reforderbackJson =
                            JsonConvert.DeserializeObject<RefOrderJsonViewModel.RefOrderJson>(response.Content);

                        if (reforderbackJson.status.ToLower() == "ok")
                        {
                            performed += reforderbackJson.data.performed;
                            order_status += reforderbackJson.data.order_status + "^";
                        }
                    }

我将它添加到 web.config

    <httpRuntime executionTimeout="100000000" maxRequestLength="262144" />

【问题讨论】:

    标签: javascript c# asp.net ajax timeout


    【解决方案1】:

    为 ajax 调用添加超时:

     $(document).on("click", "#btn-submit", function () {
                    $.ajax({
                        type: 'POST',
                        url: '/Panel/CheckRefOrderCode',
                        data: JSON.stringify({
                            factorrefid: $("#ref-check").val()
                        }),
                        contentType: 'application/json; charset=utf-8',
                        dataType: 'json',
                        **timeout: 10000 // sets timeout to 10 seconds**
                        success: function (result) {
                            if (result.DntSuccess) {
                            } else {
                            }
                        },
                        error: function () {
                        }
                    });
            });
    

    查看this post 了解如何处理超时错误。

    【讨论】:

    • 它不是 ajax 超时问题..我看到错误并且 ajax 没有返回超时错误....和服务器端:根据 fidller 的说法,ajax 错误后的 asp 仍然在做它的工作跨度>
    【解决方案2】:

    问题仍然存在;

    但我用这个

        Parallel.ForEach(myEnumerable, obj =>
    {
       // ... 
    });
    

    而不是常规

    foreach

    并并行执行 foreach 的主体, 时间在减少, 问题解决了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2016-08-06
      • 1970-01-01
      • 2015-02-23
      • 1970-01-01
      • 2014-08-03
      相关资源
      最近更新 更多