我只是想测试一下。
例如,这里是节点 JS 中的服务器代码。
正如我在下面提到的,我想正确简单地制作 onclick 事件。
因为它仅用于客户端测试。
怎么解决? 这样用法是错误的吗?
http.createServer((request, response) => {
return request
.on('error', (err) => {
console.error(err);
})
.on('data', (data) => {
//data exists
}).
on('end',()=>{
response.statusCode = 200;
response.writeHead(200, {'Content-Type':'text/html'});
response.write('<html>');
response.write('<h1> List</h1>');
response.write('<button onclick="sendToServer(data)">submit</button>'); <--this line
//I want to make onclick event for above
//but it excutes even user didnt click the button
response.write('</html>');
});
}).listen(3030);
function sendToServer(data){
request.post({
headers: {
'Accept': 'application/json, text/plain, */*',
'Content-Type': "application/json"
},
url:'https://...',
body:JSON.stringify(data)
}, function(e, r, body){
console.log(body);
});
}
-
您需要在服务器端为侦听客户端请求实现 http 路由
-
制作函数用于向客户端的服务器发送请求(我使用了简单的jquery ajax get方法(
最终的工作代码在这里
var http = require('http');
var HttpDispatcher = require('httpdispatcher');;
var dispatcher = new HttpDispatcher();
http.createServer((request, response) => {
return request
.on('error', (err) => {
console.error(err);
})
.on('data', (data) => {
//data exists
}).
on('end',()=>{
dispatcher.dispatch(request, response);
});
}).listen(3030);
dispatcher.onGet("/", function(request, response) {
response.statusCode = 200;
response.writeHead(200, {'Content-Type':'text/html'});
response.write('<html>');
response.write('<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="crossorigin="anonymous"></script>');
response.write('<script>function sendToServer(){$.ajax("/route").done(function(data){alert( data );});}</script>');
response.write('<h1> List</h1>');
response.write('<button onclick="sendToServer()">submit</button>');
response.write('</html>');
response.end();
});
dispatcher.onGet("/route", function(request, response) {
response.end("Server responding!!!"); //call your any serverside function here
});