从服务器的csv文件中提取的数据缺少新行字符

时间:2016-01-25 06:40:46

标签: javascript ajax csv filereader

我正在通过ajax调用从客户端上的服务器加载csv文件并解析它以获取行列表。但是,我的代码找不到换行符,它将整个文件视为1行。

这是我的代码

$.ajax({ url: "./data.csv", success: function(data) {
            var lines = data.split("\n");
           // I also tried this but did not work
           // var lines = data.split(/\r\n|\n/);
            console.log(lines.length); // output is 1
        }
    });

这是我的CSV(注意:分隔符是; 而不是,但这不应该导致此问题)

category;title;description;price;additional
Breakfast;Traditional Breakfast;flour tortilla, scrambled eggs, jack cheese, mild sauce;3.95
Breakfast;Traditional Breakfast;flour tortilla, scrambled eggs, sausage jack cheese, mild sauce;5.95

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您是否检查过CSV文件的格式?对于换行,它可能使用LF而不是CF.试试这个:

$.ajax({url: "./data.csv", success: function(data) {
  var lines = data.replace("\r\n", "\n").replace("\r", "\n").split("\n");
  // the rest of your code
});

答案 1 :(得分:0)

我不确定您使用哪种语言进行服务器端编码。我刚刚在ASP.NET mvc和Ajax中编写了一些代码来为您的问题找到解决方案。您可以根据需要更改代码。

public class HomeController : Controller
{
    //
    // GET: /Home/



    public JsonResult _ReadCSVFiles()
    {
        string[] values = LoadCsv(@"F:\a.csv");
        return Json(values, JsonRequestBehavior.AllowGet);
    }

    private string[] LoadCsv(string filename)
    {
        string fileContent = System.IO.File.ReadAllText(filename);


        fileContent = fileContenet.Replace('\n', '\r');
        string[] lines = fileContent.Split(new char[] { '\r' },
            StringSplitOptions.RemoveEmptyEntries);



        return lines;
    }
}

在ajax中

  $.ajax({
         url: "/Home/_ReadCSVFiles",

         success: function (doc) {
             alert(doc.length)

        }
     });