Javascript 为什么ajax不发布csv文件并在html标记中返回相同的csv文件
首先,感谢这里的所有人,我从这个平台学到了大部分代码。请帮帮我,伙计们 作为我的大代码的一部分,这个小练习,如果有人请研究一下。我尝试的是从客户端HTML向NodeJS发出ajax调用,该调用将csv文件发送到NodeJS进行处理,但检查发送/接收功能。我刚开始编写一个代码,在这个代码中,我的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
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> </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> </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)
}