从cQuery-Ajax将csv-txt数据加载到SELECT框

时间:2015-10-30 02:32:03

标签: jquery html ajax

我正在尝试加载csv/txt数据以加载到select框。我尝试了this脚本,无法将数据加载到select multiple选择框 这是我改变的剧本

  $("#upload").bind("click", function() {
    var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.txt)$/;
    if (regex.test($("#fileUpload").val().toLowerCase())) {
      if (typeof(FileReader) != "undefined") {
        var reader = new FileReader(),
          sel = $("<select id='s'>"),
          separator = ';',
          rows,
          rowLength;

        reader.onload = function(e) {
          rows = e.target.result.split(/[\r\n|\n]+/);
          rowLength = rows.length;

          for (var i = 0; i < rowLength; i++) {
            var row = $("<option>"), cells = rows[i].split(separator), cellLength = cells.length, cell;

            for (var j = 0; j < cellLength; j++) {
                $(cell).val(cells[j]);
                row.append(cell);
            }


            sel.append(row);
          }
          $("#dvCSV").html('');
          $("#dvCSV").append(sel);
        }
        reader.readAsText($("#fileUpload")[0].files[0]);
      } else {
        alert("This browser does not support HTML5.");
      }
    } else {
      alert("Please upload a valid CSV file.");
    }
  });

这会加载空白选择框。如何加载此值(optiontext必须相同)

对此,我想跳过一行,如果任何一列是空白的

1 个答案:

答案 0 :(得分:0)

实际上,如果您可以在服务器中进行设置,我认为使用Python及其CSV模块会更容易。

但是,使用JavaScript,您可以使用PapaParse并使用它进行迭代。

作为最后一个选项,请查看this answer

什么是分隔符?

我发布的答案允许使用值分隔符。这是一种在CSV文件中包含逗号值的方法。

例如,这是一个随机的CSV行

USERNAME, PASSWORD
JOHN,"asd,ddd"

正如您所看到的,制作者在PASSWORD字段中使用了额外的逗号,因此使用引号来逃避它。

最后,为了这个目的,我强烈推荐使用Python或类似的脚本语言。使用JavaScript并不是最有效的方法。

对于代码,一旦你有了行,请务必撤消DELIMITER。

然后,您的代码将起作用(使用Python编写的示例)

for x in row: #going through each element of the row
    if x != "":
        myRowArray.add(row)