Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么只返回第一个数组元素?_Javascript_Node.js_Fetch - Fatal编程技术网

Javascript 为什么只返回第一个数组元素?

Javascript 为什么只返回第一个数组元素?,javascript,node.js,fetch,Javascript,Node.js,Fetch,我试图从节点https服务器返回一个数组数组。我在客户端得到的只是第一个数组元素。以下是客户端代码: handleItemList() { document.getElementById(`itemListBtn`).addEventListener(`click`, () => { this.setDivDisplay(`itemListDiv`); fetch(document.url, { method: 'POST',

我试图从节点https服务器返回一个数组数组。我在客户端得到的只是第一个数组元素。以下是客户端代码:

handleItemList() {
    document.getElementById(`itemListBtn`).addEventListener(`click`, () => {
        this.setDivDisplay(`itemListDiv`);
        fetch(document.url, {
            method: 'POST',
            headers: {
                'x-requested-with': 'fetch.1',
                'mode': 'no-cors'
            }
        }).then(function (response) {
            return response.text();
        }).then(function (data) {
            console.log(data); //outputs 1st MD array element only!
        }).catch(function (error) {
            console.log(error);
        });
    });
}
以下是服务器代码:

if (request.headers['x-requested-with'] === 'fetch.1') {
    this.data_handler.getAllItems(function (fetchedData) {
        console.log(fetchedData); //outputs entire MD array! (as string)
        response.writeHead(200, {'content-type': 'text/plain'});
        response.end(fetchedData);
    });
}
以下是DataHandler类方法:

getAllItems(callback) {
        this.db.all(`SELECT * FROM psp_assets`, function(err, rows) {
            rows.forEach(function (row) {
                let data = [row.maker, row.model, row.tag, row.sn, row.type, row.description, row.warranty, row.purchaseDate, row.isTitle1, row.isTitle9, row.is31a];
                callback(JSON.stringify(data));
            });
        });
    }
以下是MD阵列中的一些示例数据:

["Samsung","srfg Quasi Turbo Monitor",223456,"223344","lcd_monitor","someting",24,"2016-01-20",1,0,0]
["LG","AQ 2013",226122,"345678","lcd_monitor","Monitor",36,"2015-01-03",0,1,0]
["Asus","FG3098",87654,"123987","lcd_monitor","Monitor",12,"2016-04-02",0,0,1]
["Apple","iPad Pro",7654321,"654321","ipad","iPad",12,"2016-01-20",1,0,0]
["Logitech","Cam223",678345,"3456789","consumable","WebCam",6,"2016-01-23",1,0,0]
["HP","Stream Pro G4",76534,"87654321","laptop","Mini lapto",12,"2016-01-20",1,0,0]
["hp","Stream 11 G4 Pro EE",878787,"89743211","laptop","laptop",24,"2017-03-03",0,1,0]

我知道了!这是因为我在
dataHandler()
方法中使用了代码。下面是将数据推入数组的新方法

getAllItems(callback) {
        this.db.all(`SELECT * FROM psp_assets`, function(err, rows) {
            let data = [];
            rows.forEach(function (row) {
                data.push([row.maker,row.model,row.tag,row.sn,row.type,row.description,row.warranty,row.purchaseDate,row.isTitle1,row.isTitle9,row.is31a]);
            });
            callback(data);
        });
    }

您需要在服务器端创建一个JSON字符串,然后在客户端使用JSON对其进行解析。你这样做了吗?你能公开你的MD数组的格式吗?数据不是JSON字符串,每个数组后面应该是逗号。你需要在整个外部数组上运行
JSON.stringify()
,而不是在每个内部数组上运行。