【问题标题】:Javascript writing to a text file on multiple linesJavascript 在多行上写入文本文件
【发布时间】:2015-04-28 14:46:51
【问题描述】:

我正在编写一些代码,可以从 url 中提取 json 文件并解析 json。
该脚本可以过滤掉我需要的数据,它工作得很好。

现在,我的目标是将数据写入文本文件。我已经实现了这一点,但是数据杂乱无章。我已经在下面发布了我的代码。

document.getElementById("find").addEventListener("click", sendHTTP);

function sendHTTP() 
{
    var httpreq;

    if (window.XMLHttpRequest) 
    { // code for IE7+, Firefox, Chrome, Opera, Safari
        httpreq = new XMLHttpRequest();
    } 
    else 
    { // code for IE6, IE5
        httpreq = new ActiveXObject("Microsoft.XMLHTTP");
    }

    httpreq.onreadystatechange = function() {
        if (httpreq.readyState == 4) 
        {
            var store = httpreq.responseText;
            var me = JSON.parse(store);
            var parsed = [];
            try  
            {
                for (var i = 0; i < store.length; i++) 
                {
                    parsed.push(me.products[i].title);    // title

                    for (var j = 0; j < me.products[i].offers.length; j++) 
                    {
                        parsed.push(me.products[i].offers[j].offer_id);  // offer_id
                    }
                }
            } 
            catch (err) 
            { } 
            finally 
            {
                downloadURI("data:text/html," + parsed.join(""), "inventory.txt");
            }
        }
    };

    httpreq.open("GET", "http://shop.cncpts.com/collections/nike-sb.oembed");
    httpreq.send();
}

function downloadURI(uri, name) 
{
    var link = document.createElement("a");
    link.download = name;
    link.href = uri;
    link.click();
}

函数 downloadURI 执行下载。
文本文件将成功下载,但来自 json 的数据杂乱无章到一行。

有什么方法可以让我把所有东西都放在一个单独的线上吗?例如:

标题
offer_id
标题
offer_id.....

【问题讨论】:

  • parsed.join("\r\n") 可能会带你到某个地方
  • @Jack:你的意思是.join('\r\n') 确定吗?
  • @Bergi 假设你在我看到我的错误之前看到了我的评论:P
  • 也许我应该开始回答问题而不是有用的 cmets :)
  • @Jack:确实如此。 (对他们俩)

标签: javascript jquery json parsing


【解决方案1】:

加入换行符

downloadURI("data:text/html," + encodeURIComponent(parsed.join("\r\n"), "inventory.txt"));

【讨论】:

  • 您也需要encodeURIComponent 吗?在 URL 中有一个真正的新行对我来说似乎是错误的
  • @PaulS。 - 啊哈,这就是缺少的东西,我正在测试但无法使其正常工作,但必须对字符串进行编码,但 data 部分无法编码
  • 而对于 Windows,它实际上 必须 是换行 + 回车 (\r\n),否则它也不起作用。
  • @adeneo 谢谢!完美运行。感谢您的帮助!
  • @adeneo 车厢 \r eturn + li \n e feed, CrLf, \r\n。总是以正确的顺序说出它们让生活更轻松(尽管我知道\r etur \n 的简单记忆方法)
【解决方案2】:

这应该可行。

downloadURI("data:text/html," + parsed.join("\r\n"), "inventory.txt");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-15
    • 2023-04-05
    • 2012-03-03
    • 2013-01-19
    • 2012-11-06
    • 2013-10-18
    • 2017-05-28
    • 2013-09-18
    相关资源
    最近更新 更多