[英]Post request - sent data in json format
我有一个学习项目。 使用带有输入和按钮的简单表单。 需要将输入值保存到JSON文件中。 HTML
<form action="/" method="post" id="emailForm">
<input type="email" id="email" name="email" placeholder="Enter email for newsletter">
<button type="submit" id="subscribe" value=""><i class="fas fa-chevron-right"></i></button>
</form>
JS将数据转换为JSON格式
$('#subscribe').on('click', function (event) {
// prevent from reloading the page
event.preventDefault();
// checking validity of input
if (ValidateEmail()) {
var formData = $("#emailForm").serializeArray();
$.each(formData, function () {
if (jsonData[this.name]) {
if (!jsonData[this.name].push) {
jsonData[this.name] = [jsonData[this.name]];
}
jsonData[this.name].push(this.value || '');
} else {
jsonData[this.name] = this.value || '';
}
jsonData = JSON.stringify(jsonData);
});
console.log(jsonData);
$.ajax({
url: "app.js",
type: "POST",
dataType: 'json',
data: jsonData
});
alert('Email saved!');
return jsonData;
} else {
console.log('email not saved');
}
});
app.js
const fs = require('fs');
fs.readFile('email.json', (err, data) => {
if (err) throw err;
let email = JSON.parse(data);
console.log('original' + email);
});
fs.writeFileSync('email.json', jsonData);
console.log('done');
问题出在访问文件app.js-首先,它被chrome阻止了
CORS策略已阻止从源“ null”访问“ file:/// D:/HTML/Try%20it/acad/master/app.js”处的XMLHttpRequest:协议方案仅支持跨域请求: HTTP,数据,chrome,chrome扩展名,https
尝试使用node.js运行本地服务器,并收到错误405(不允许使用方法)。
您的app.js只是一个脚本,它开始读取文件,通过阻塞线程来写入文件,打印“完成”并关闭。 没有HTTP服务器,没有请求处理...
您首先需要设置一个HTTP服务器,这可以通过本机http
node.js模块或其他模块(例如express
)完成,以便侦听事件并在调用服务器时触发代码。
此外, http-server
是由快速呈现一些文件,试图POST
到一个文本文件明明什么都不做,如果你要GET
它,你只会让你的文本文件,这对你没有好处。
因此,根据您的家庭作业约束,您需要检查http
或express
文档,设置有效的HTTP服务器,然后在该调用中正确写入文件。
(提示:请勿在node.js中使用...Sync
函数,除非您真的知道自己在做什么,并检查什么是“异步”函数,否则将需要它)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.