【问题标题】:Sending csv through Ajax通过 Ajax 发送 csv
【发布时间】:2014-01-30 08:35:54
【问题描述】:

我正在尝试将用 JS 打开的 csv 文件发送到用 C# 编写的方法,其中 csv 文件将被解析并添加到数据库中。

我打开文件并获取其内容没有问题。 但无论我对 Ajax 调用做什么,我都会在 CreateFromFile 方法中收到空数据。 在这里你可以看到我的代码:

var a = fr.result;
$.ajax({
url: "/DeviceInstance/CreateFromFile",
type: "POST",
datatype: "html",
data: a,
error: function (data) {
    alert("Dodanie  nie powiodło się  Jeden lub wiecej numerów seryjnych nie są nikalne " + data);
},
success: function (data) {
    if (data.length > 0) {
        alert(data);
    }
    else {
        alert("Operacja zakonczona sukcesem")
    }
  }
});

和:

[HttpPost]
public JsonResult CreateFromFile(object data)
{

    return Json("Sukces");
}

我在问我应该如何修改我的代码以使事情正常工作?

这里:fr.result:

samsung;galaxy ;s3;1234567
samsung;galaxy ;s4;54321
samsung;galaxy ;s5;34567yu8

【问题讨论】:

    标签: c# jquery ajax asp.net-mvc csv


    【解决方案1】:

    您可以读取请求输入流来访问正文负载:

    [HttpPost]
    public JsonResult CreateFromFile()
    {
        byte[] data = new byte[Request.InputStream.Length];
        Request.InputStream.Read(data, 0, data.Length);
        string csv = Encoding.UTF8.GetString(data);
        // ... do something with the csv
    
        return Json("Sukces");
    }
    

    在您的 AJAX 请求中,您似乎还指定了 datatype: "html"。这有两个问题:

    1. 参数被称为dataType而不是datatype
    2. 您指定了 html,但您的控制器操作返回 JSON。

    所以这是非常不一致的事情。我建议你去掉这个参数,让 jQuery 使用响应 Content-Type 标头自动推断正确的类型。

    【讨论】:

      【解决方案2】:

      尝试以下操作(假设您的 a 有效负载确实是一个字符串):

      $.ajax({
          url: '/DeviceInstance/CreateFromFile',
          type: 'POST',
          dataType: 'json',
          contentType: 'application/json',
          data: JSON.stringify({ dane: a }),
          /* callbacks */
      });
      

      您的控制器操作现在应该如下所示:

      [HttpPost]
      public JsonResult CreateFromFile(string dane)
      {
          // Parse CSV data from "dane"
      }
      

      希望这会有所帮助。

      【讨论】:

      • [FromBody] 用于 ASP.NET Web API。在他的示例中,他使用的是普通的 ASP.NET MVC 控制器,其中该属性根本没有任何影响。
      猜你喜欢
      • 2014-08-05
      • 2014-09-23
      • 2012-03-29
      • 2014-04-06
      • 2016-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      相关资源
      最近更新 更多