Ajax调用给出内部服务器错误

时间:2015-03-18 19:20:57

标签: jquery ajax json

我想在创建Excel文件时显示进度条图像。我正在使用ajax调用来调用我的控制器动作方法。它给了我内部服务器错误。 这是我的控制器/ Action方法和Ajax调用.....

public ActionResult GenerateExcelReport(GenerateReportViewModel oGenerateReportViewModel) {
    // Create new excel application
    excelApp = new Microsoft.Office.Interop.Excel.Application();
    excelApp.Visible = false;
    excelApp.DisplayAlerts = false;
    // Excel Generation Code goes here....
    return Json(oGenerateReportViewModel);
}

AJAX Call ....

$(document).ready(function () {
    $("#btnSubmitGenerateRpt").click(function () {
        $("#divLoading").show();
        $.ajax({
            url: '/GenerateReport/GenerateExcelReport',
            type: 'POST',
            data: {},
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            error: function (xhr, ajaxOptions, thrownError) {
                alert('Error: ' + xhr.statusText + " Thrown Error: " + thrownError + " Options: " + ajaxOptions);
            },
            success: function (result) {
                alert("Function Called!!!");
                $("#divLoading").hide();
            },
            async: true,
            processData: false
        });
    });
});

1 个答案:

答案 0 :(得分:0)

当您需要将JSON传递给您的操作时,您必须传递JSON的字符串表示形式,通常使用JSON.stringify:

$.ajax({
    ...
    data: JSON.stringify({}),
    ...
});

当然,既然你没有传递任何东西,你可以做到

    data: "{}",

如果你使用的是默认的contentType(application / x-www-form-urlencoded; charset = UTF-8),那么你可以传入一个javascript对象,并假设它是一个简单的对象,它会将其转换为POST内容的URL编码键值。为了实现这一目标,您还必须删除processData:false行。