Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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 为什么ajax不发布csv文件并在html标记中返回相同的csv文件_Javascript_Node.js_Csv_Express - Fatal编程技术网

Javascript 为什么ajax不发布csv文件并在html标记中返回相同的csv文件

Javascript 为什么ajax不发布csv文件并在html标记中返回相同的csv文件,javascript,node.js,csv,express,Javascript,Node.js,Csv,Express,首先,感谢这里的所有人,我从这个平台学到了大部分代码。请帮帮我,伙计们 作为我的大代码的一部分,这个小练习,如果有人请研究一下。我尝试的是从客户端HTML向NodeJS发出ajax调用,该调用将csv文件发送到NodeJS进行处理,但检查发送/接收功能。我刚开始编写一个代码,在这个代码中,我的index.html文件将csv文件发送到server.jsNodeJS脚本,成功提交后,响应时的ajax将在index.html中创建同一csv文件的csv链接,带有id为linkforoutput的di

首先,感谢这里的所有人,我从这个平台学到了大部分代码。请帮帮我,伙计们

作为我的大代码的一部分,这个小练习,如果有人请研究一下。我尝试的是从客户端HTML向NodeJS发出ajax调用,该调用将csv文件发送到NodeJS进行处理,但检查发送/接收功能。我刚开始编写一个代码,在这个代码中,我的
index.html
文件将csv文件发送到
server.js
NodeJS脚本,成功提交后,响应时的ajax将在index.html中创建同一csv文件的csv链接,带有id为
linkforoutput
的div标记内的html锚标记

请任何人都能看到这个

index.html的代码

<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Podrank</title>
      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
      <style>
         .inputdiv {
         border-style: solid;
         width: 400px;
         margin-top: 10%;
         }
         .multidiv {
         border-style: solid;
         width: 400px;
         margin-top: 10%;
         }
      </style>
   </head>
   <body>
      <center>
         <div class="inputdiv">
            <form method="post" enctype="multipart/form-data" action="/getscore">
               <p><b>Please enter patent number: </b><input type="text" name="patentNumber" id="patentNumber"></p>
               <p>For e.g. US9015616B2 or 9015616</p>
               <br>
               <input type="submit" style="cursor:pointer;" value="Get score!">
               <br><br>
            </form>
         </div>
         <div class="multidiv">
            <form method="POST" enctype="multipart/form-data">
               <p for="">Please upload csv file (having list of patent numbers):
                  <br>
                  <input type="file" style="cursor: pointer;" name="csvfile" id="csvfile" accept=".csv">
               </p>
               <br><br>
               <button type="submit" id="submit_button" style="cursor: pointer;">Submit</button><br><br>         
            </form>
            <div id="linkforoutput"></div>
         </div>
      </center>
      <script>
         alert("submit clicked!")
         
         $(function(){              
                 $('#submit_button').click(function(e){
                     e.preventDefault();
                     console.log('select_link clicked');
                     
         $.ajax({
         type: 'POST',
                         dataType: 'csv',
         data: {"csvData":csvfile},
                         url: 'http://localhost:3000/getscorelist',                     
                         success: function(data) {
                             console.log('success');
         
                             var received_data = data
                             var filename = "output.csv"
         
                             const saveData = (function () {
                                 const a = document.createElement("a");
                                 $('#linkforoutput').appendChild(a);
                                 a.style = "display: none";
                                 return function (received_data, fileName) {
                                     const blob = new Blob([received_data], {type: "octet/stream"}),
                                         url = window.URL.createObjectURL(blob);
                                     a.href = url;
                                     a.download = fileName;
                                     a.click();
                                     window.URL.revokeObjectURL(url);
                                 };
                             }());
                                                 
                             saveData(received_data, fileName);
                         }
                     });
         
                 });        
         });        
         
      </script>
   </body>
</html>

我的nodejs脚本,它将接收csv文件输入,如下所示

// This is a server file which send/receives request/responses from index.html

/* csv to json */
const express = require("express"),
  app = express(),
  upload = require("express-fileupload"),
  csvtojson = require("csvtojson");

var http = require('http');
var path = require("path");
var bodyParser = require('body-parser');
var helmet = require('helmet');
var rateLimit = require("express-rate-limit");

app.use(upload());

var server = http.createServer(app);

const limiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15 minutes
  max: 100 // limit each IP to 100 requests per windowMs
});

app.use(bodyParser.urlencoded({extended: false}));
app.use(helmet());
app.use(limiter);

const port = process.env.PORT || 3000
// Creates a server which runs on port 3000 and 
// can be accessed through localhost:3000 
app.listen(port, () => { 
    console.log(`server running on port at ${port}`); 
})

app.get('/', function(req, res){
    res.sendFile(path.join(__dirname,'index.html'));
});

app.post('/getscore', getscore);

function getscore(req, res){

    var spawn = require("child_process").spawn;
    
    var process = spawn('python',["mainfile.py", req.body.patentNumber]);

    process.stdout.on('data', function(data) {

        var mystr = data.toString();
        myjson = JSON.parse(mystr)
        res.send("<center><title>Podrank</title><div class='outputdiv' style='border-style: solid; width: 600px;'><div style='text-align: left; padding:10px;'><p>Input patent number: "+req.body.patentNumber+"</p><p>"+myjson.data+"</p></div><p style='text-align: right;'><i>By <b><a href='https://www.copperpodip.com/' target='_blank'>Copperpod IP</a> </b></i>&nbsp;&nbsp;</p><a href='https://www.copperpodip.com/contact-us' target='_blank'>Contact us</a></div></center>");
        
    })

    process.stderr.on('data', function(data){
        res.send(data.toString());
    });

}

// Will remove all falsy values: undefined, null, 0, false, NaN and "" (empty string)
function cleanArray(actual) {
    var newArray = new Array();
    for (var i = 0; i < actual.length; i++) {
        if (actual[i]) {
        newArray.push(actual[i]);
        }
    }
    return newArray;
}

function get_array_string(inp){
    var str = "";
    for (var i = 0; i < inp.length; i++){
        str = str + " " + inp[i]
    }
    return str.trim()
}

app.post('/getscorelist', getscorelist);

function getscorelist(req, res){

    csvData = req.files.csvfile.data.toString('utf8');
    // filteredArray = cleanArray(csvData.split(/\r?\n/))
    // csvData = get_array_string(filteredArray)
    // csvData = csvData.trim()

    res.send(req.csvData)
}

//这是一个服务器文件,用于从index.html发送/接收请求/响应
/*csv到json*/
const express=需要(“express”),
app=express(),
上传=要求(“快速文件上传”),
csvtojson=要求(“csvtojson”);
var http=require('http');
var路径=要求(“路径”);
var bodyParser=require('body-parser');
var头盔=需要(“头盔”);
var利率限额=要求(“明示利率限额”);
app.use(upload());
var server=http.createServer(app);
常数限制器=速率限制({
windowMs:15*60*1000,//15分钟
最大:100//将每个IP限制为每个windowMs 100个请求
});
use(bodyParser.urlencoded({extended:false}));
应用(头盔());
应用(限制器);
const port=process.env.port | 3000
//创建在端口3000和上运行的服务器
//可通过localhost:3000访问
应用程序侦听(端口,()=>{
log(`server running on port at${port}`);
})
app.get('/',函数(req,res){
res.sendFile(path.join(uu dirname,'index.html');
});
app.post('/getscore',getscore);
函数getscore(请求、恢复){
var spawn=require(“子进程”)。spawn;
var process=spawn('python',[“mainfile.py”,req.body.patentNumber]);
process.stdout.on('data',函数(data){
var mystr=data.toString();
myjson=JSON.parse(mystr)
res.send(“Podrank输入专利号:“+req.body.patentNumber+”

“+myjson.data+”

By

”; }) process.stderr.on('data',函数(data){ res.send(data.toString()); }); } //将删除所有falsy值:未定义、null、0、false、NaN和“”(空字符串) 函数数组(实际){ var newArray=newArray(); 对于(变量i=0;i
我使用的一些参考资料如下
// This is a server file which send/receives request/responses from index.html

/* csv to json */
const express = require("express"),
  app = express(),
  upload = require("express-fileupload"),
  csvtojson = require("csvtojson");

var http = require('http');
var path = require("path");
var bodyParser = require('body-parser');
var helmet = require('helmet');
var rateLimit = require("express-rate-limit");

app.use(upload());

var server = http.createServer(app);

const limiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15 minutes
  max: 100 // limit each IP to 100 requests per windowMs
});

app.use(bodyParser.urlencoded({extended: false}));
app.use(helmet());
app.use(limiter);

const port = process.env.PORT || 3000
// Creates a server which runs on port 3000 and 
// can be accessed through localhost:3000 
app.listen(port, () => { 
    console.log(`server running on port at ${port}`); 
})

app.get('/', function(req, res){
    res.sendFile(path.join(__dirname,'index.html'));
});

app.post('/getscore', getscore);

function getscore(req, res){

    var spawn = require("child_process").spawn;
    
    var process = spawn('python',["mainfile.py", req.body.patentNumber]);

    process.stdout.on('data', function(data) {

        var mystr = data.toString();
        myjson = JSON.parse(mystr)
        res.send("<center><title>Podrank</title><div class='outputdiv' style='border-style: solid; width: 600px;'><div style='text-align: left; padding:10px;'><p>Input patent number: "+req.body.patentNumber+"</p><p>"+myjson.data+"</p></div><p style='text-align: right;'><i>By <b><a href='https://www.copperpodip.com/' target='_blank'>Copperpod IP</a> </b></i>&nbsp;&nbsp;</p><a href='https://www.copperpodip.com/contact-us' target='_blank'>Contact us</a></div></center>");
        
    })

    process.stderr.on('data', function(data){
        res.send(data.toString());
    });

}

// Will remove all falsy values: undefined, null, 0, false, NaN and "" (empty string)
function cleanArray(actual) {
    var newArray = new Array();
    for (var i = 0; i < actual.length; i++) {
        if (actual[i]) {
        newArray.push(actual[i]);
        }
    }
    return newArray;
}

function get_array_string(inp){
    var str = "";
    for (var i = 0; i < inp.length; i++){
        str = str + " " + inp[i]
    }
    return str.trim()
}

app.post('/getscorelist', getscorelist);

function getscorelist(req, res){

    csvData = req.files.csvfile.data.toString('utf8');
    // filteredArray = cleanArray(csvData.split(/\r?\n/))
    // csvData = get_array_string(filteredArray)
    // csvData = csvData.trim()

    res.send(req.csvData)
}