在下载Excel文件时出现错误"Requested JSON parse failed"

9 浏览
0 Comments

在下载Excel文件时出现错误"Requested JSON parse failed"

为什么我会收到这个错误?

0
0 Comments

(Error "Requested JSON parse failed" in downloading excel file) 这个问题的出现的原因是在下载Excel文件时,发生了请求JSON解析失败的错误。解决方法是使用轻量级的JavaScript在客户端创建Excel文件,并使用download属性进行下载。

为什么要使用后端来创建和下载Excel文件,这样做过于复杂,而且下载部分很困难。可以使用客户端上的JavaScript来完成这个任务,它可以从XML创建Excel文件,并使用download属性进行下载。

以下是解决问题的代码示例:

var data_type = 'data:application/vnd.ms-excel';
var table_div = document.getElementById('table_wrapper');
var table_html = table_div.outerHTML.replace(/ /g, '%20');

你可以在这里找到解决方案:[Here is Solution](https://codepen.io/kostas-krevatas/pen/mJyBwp)

0
0 Comments

(Error "Requested JSON parse failed" in downloading excel file)这个问题的出现的原因可能是服务器在发送文件时出现了错误。解决方法可以尝试将响应的Content Type更改为application/vnd.ms-excel。另外,如果需要将Excel文件保存到本地,可以使用HTML5的< a download>标签。至于如何下载获取到的数据,由于JavaScript的安全限制,无法直接从网页保存文件到文件系统,但可以将文件保存到浏览器的本地存储中,或使用相关的库,或使用之前提到的< a download>标签。如果有一个按钮触发Ajax调用的话,可以使用Download来实现下载。

0
0 Comments

在下载Excel文件时出现了错误"Requested JSON parse failed"。这个错误的原因是AJAX调用期望得到JSON数据作为返回值,但是控制器的操作方法返回的数据类型与JSON对象不同。通过检查控制器流程并省略一些无关的代码,我们可以得到以下内容:

public ActionResult ExportReportToExcel(string X, string Y, string Z)
{
    // 其他操作
    var customer = _authenticationService.CurrentCustomer;
    if (customer == null)
        return new LmsHttpUnauthorizedResult();
    try
    {   
        // 其他操作
        return null; // 这里返回了null值,而不是预期的JSON对象
    }
    catch (Exception ex)
    {
        return Redirect(TempData["PDFPrevUrl"].ToString());
    }
} 

默认情况下,jQuery根据响应的MIME类型来推断dataType参数(xml、json、script或html,默认为JSON)。因此,你需要通过以下方法之一返回一个JSON对象:

// ContentResult
return Content("message_text", "application/json");
// JsonResult
return Json("message_text", JsonRequestBehavior.AllowGet);

如果你想通过AJAX返回文件进行下载,你可以使用`window.location`或`window.location.href`进行重定向:

$.ajax({
    url: importUrl, // 这里应该是指向JsonResult操作方法的URL
    data: {
        X: "12",
        Y: "12",
        Z: "12"
    },
    success: function (data) {
        // 处理数据响应
        window.location = downloadUrl; // 重定向到FileResult操作方法
    },
    error: function (jqXHR, exception) {
        // 其他操作
    }
});
// 返回Excel二进制文件的示例控制器
public FileResult DownloadFile(string fileName)
{
    // 其他操作
    byte[] content = TempData["something"] as byte[];
    return File(content, "application/vnd.ms-excel", fileName);
}

注意:上面的解释大多是简单的,你的当前实现可能与给出的示例不同。

类似的问题:

- [Download Excel file via AJAX MVC](https://stackoverflow.com/questions/16670209)

- [jQuery returning "parsererror" for ajax request](https://stackoverflow.com/questions/5061310)

0