使用后AJAX

时间:2018-02-09 11:22:42

标签: c# ajax excel asp.net-web-api epplus

我正在尝试在我的页面中导出一些数据,将JSON对象发送到我的控制器,调用此方法:

[HttpPost]
public HttpResponseMessage Export([FromBody]List<PivotGridModel> lstPivotGrid)
{

    transporte = GetList();

    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK);
    MediaTypeHeaderValue mediaType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    response.Content = new ByteArrayContent(_Service.Export(transporte.Lista, lstPivotGrid));
    response.Content.Headers.ContentType = mediaType;
    response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
    response.Content.Headers.ContentDisposition.FileName = String.Format("Plan_{0:yyyy-MM-dd__HH-mm-ss}.xlsx", DateTime.Now);

    return response;
}

当我点击我的页面中的“导出”按钮时,调用的AJAX就是这个:

// the 'url' is the path of my controller and the 'data' is my object
executePostAjaxDataHeaders: function (url, data, headers) {

    var obj = null;

    utils.vars.callerName = arguments.callee != null && arguments.callee.caller != null ? arguments.callee.caller.name : "";

    $.ajax({
        type: "POST",
        url: url,
        async: false,
        data: JSON.stringify(data),
        headers: headers,
        contentType: 'application/json; charset=utf-8',
        beforeSend: function () { dxLoadPanel.funcs.show(); },
        complete: function () { dxLoadPanel.funcs.hide(); },
        success: function (data) { obj = data; },
        error: function (request, status, error) { console.log(request); console.log(error); obj = utils.funcs.loadAjaxError(utils.vars.callerName, request, status, error); }
    });

    return obj;
}

当我点击页面上的按钮时,控制台会返回一个错误消息:

  

错误:无效的XML:一些随机字符,如: &amp;N &gt;

我错过了什么?我想在我的页面中下载文件...我正在使用“获取”测试它并直接在URL中调用我的控制器,但当我将我的方法更改为帖子(以获取我页面上的数据)时,它停止了工作。

0 个答案:

没有答案