$.ajax 在 MVC4 中不起作用



请参考下面的代码

var pdf="xxxxxxx";
 $.ajax({
            type: "post",
            url: "/Corporate/SampleChangeSummary/PDF",
            data: JSON.stringify(pdf),
            contentType: 'application/json',
            dataType: 'json',
            error: function (status, xhr) {
            }
        });

[HttpPost]
        public ActionResult PDF(object pdf)
        {
.......
}

但它返回 pdf 是空的。问题出在哪里?我的代码中有任何语法错误吗?

我相信contentType是导致问题的原因。 在您的脚本中,您告诉$.ajax()它正在发送 JSON 字符串,但您让它发送了一个.pdf。 相反,只需删除contentType行并尝试一下。

其次,dataType: 'json'告诉您的$.ajax()它期待 JSON 格式的响应。 如果这就是你正在做的事情,那么你不必担心那条线。

编辑:

找到更多信息 - 如果您想保留contentType,请修改为:contentType: application/pdf',并在您的$.ajax()发送到的 php 文件上添加header('Content-type: application/pdf');

试试这个:

$.ajax({
    type: "post",
    url: "/Corporate/SampleChangeSummary/PDF",
    data: JSON.stringify({pdf: pdf}),
    contentType: 'application/json',
    dataType: 'json',
    error: function (status, xhr) { }
});

ASP.NET MVC 要求您发送"键值"JSON 对象,以便它可以相应地绑定。此外,将object pdf更改为 string pdf

试试这样的事情

$.ajax({
         type: "POST",
         url: '/Corporate/SampleChangeSummary/PDF',
         data: { pdf: JSON.stringify(pdf) },
         success: function (data) {
                    //do somthing with the result
                  },
         error: function (error) {
                    alert('Please try again!');
                }
        });
  var pdf="xxxxxxx";
   $.ajax({
        type: "post",
        url: "/Corporate/SampleChangeSummary/PDF",
        data: { "pdf" : pdf },
        dataType: 'json',
        error: function (status, xhr) {
        }
    });

  [HttpPost]
    public ActionResult PDF(object pdf)
    {
       .......
    }

您不需要字符串化您的 PDF,因为它已经是字符串,请尝试将其直接传递给您的控制器。

最新更新