【问题标题】:Ajax call not executing as expectedAjax 调用未按预期执行
【发布时间】:2020-06-02 18:43:46
【问题描述】:

我有一个 ajax 调用没有按我的预期执行。我从浏览器收到“jquery-1.10.2.js:8157 Uncaught TypeError: Cannot read property 'FileGuid' of undefined”的错误。在 GetExportData 和 Download 函数开始时,我的 CS 文件中都有断点,但它们中的任何一个都没有被命中。

function generateExportFile() {
        var datefrom = $('#tab_MHSubpay_datefrom').ejDatePicker("getValue");
        var dateto = $('#tab_MHSubpay_dateto').ejDatePicker("getValue");
        var show = $('#tab_MHSubpay_show').ejDropDownList("getSelectedValue");
        var service = $('#tab_MHSubpay_serviceType').ejDropDownList("getSelectedValue");
        var phase = $('#tab_MHSubpay_phaseCode').ejDropDownList("getSelectedValue");


        $('#accwpopup').ejWaitingPopup({
            showOnInit: true,
            text: "Generating file...",
            target: "#tbldata"
        });

        debugger;
        $.ajax({
            cache: false,
            url: '@Url.Action("GetExportData", "MHSubpay")',
            data: {
                datefrom: datefrom,
                dateto: dateto,
                show: show,
                service: service,
                phase: phase
            },
            success: function (data) {
                $('#accwpopup').ejWaitingPopup('destroy');
                window.location = '@Url.Action("Download", "MHSubpay")?fileGuid=' + data.Data.FileGuid + '&filename=' + data.Data.FileName;
            },
            error: function (data) {
                $('#accwpopup').ejWaitingPopup('destroy');
                showMessage("An error ocurred trying to generate the file", false);
            },
            async: false
        });
    }

【问题讨论】:

    标签: jquery asp.net ajax


    【解决方案1】:

    受影响的行是这一行,因为这是您尝试访问 FileGuid 属性的唯一行:

    window.location = '@Url.Action("Download", "MHSubpay")?fileGuid=' + data.Data.FileGuid + '&filename=' + data.Data.FileName;
    

    更具体地说,这部分代码:

    data.Data.FileGuid
    

    基于 Ajax 请求执行成功,但响应没有 Data 属性。

    我要做的是在成功方法的第一行添加console.log(data),以查看响应正文中的内容。

    旁注:这是在浏览器中运行的 JavaScript 代码,因此在这个运行在服务器端的 CS 文件中放置断点没有多大意义。

    【讨论】:

    • 断点只是为了查看 GetExportData 函数是否在服务器端被命中。
    【解决方案2】:

    事实证明这是一个非常愚蠢的错误,我只是一直在掩饰。我从未将我从另一个控制器回收的服务器端代码更新为 HttpGet 函数而不是 HttpPost。一旦我切换,呼叫就会正常进行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-23
      • 2013-08-20
      • 2017-12-15
      • 2011-02-25
      • 2012-11-23
      • 2014-10-20
      相关资源
      最近更新 更多