使用JS发送POST请求,并使用Node处理数据

时间:2019-03-06 13:48:08

标签: javascript node.js

我正在将“与我联系”部分添加到网站。我希望能够使用JS发送来自表单的数据,然后使用Node接收数据并对其进行处理。我知道有些框架和库可以处理这些问题,但是我想从头开始构建它,以便对发生的事情有更好的了解。

我目前有一段JS(请参阅下文),用于获取表单数据,并将其作为POST请求发送到节点脚本,但是我似乎无法完全理解node的情况,或如何使用节点脚本接收数据。非常感谢您为我指明正确的方向。

const name = $(".name");
const email = $(".email");
const message = $(".message");
const submitButton = $(".submitButton");
const nameRegex = /([a-zA-Z\s-])/g;
const emailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/g;
const messageRegex = /([a-zA-Z\s.,?!$%&])/gm;

const url = "../node/contactMeSubmissionHandler.js"

submitButton.click(function(){
  let nameContents = name.val().match(nameRegex).join("");
  let emailContents = email.val().match(emailRegex).join("");
  let messageContents = message.val().match(messageRegex).join("");
  // if (emailRegex.test(emailContents) == true) {
  //   let emailValid = emailContents;
  // } else {
  //   console.log("Email is invalid");
  // };
  const data = {
    email: emailContents,
    name: nameContents,
    message: messageContents
  }
  $.post(url, data, function(data, status){
    console.log(`${data} and status is ${status}`);
  })
})

2 个答案:

答案 0 :(得分:0)

使用此代码创建服务器,并检查登录控制台中的不同请求属性。

const http = require('http');

http
  .createServer((request, response) => {
    console.log(request);
    response.end();
  })
  .listen(3000);

http://localhost:3000/进行GET和POST请求,并寻找methodheaders等。

查看更多herehere

答案 1 :(得分:0)

我也喜欢从头开始写作。这是从命令行调用以获取令牌的工作代码。

//  clientEx.js

var http = require('http');
var fs = require('fs');

const _SERVER = "dcsmail.net";      /* dcsmail.net */

// Callback function is used to deal with response
//
var callback = function (response)
    {
    // update stream with data
    var body = '';
    response.on('data', function(data) {
        body += data;
        });
    response.on ('end', function()
        {
        // Data received completely.
        fs.writeFileSync ("temp.lst", body, 'utf8');
        // console.log ("clientEx.js received: " + body);
        });
    }

if ((process.argv[2] == null) || (process.argv[3] == null) || (process.argv[4] == null) || (process.argv[5] == null))
    {
    console.log ("clientEx.js usage:<user email> <user password> <destination> <GUID>");
    }
else
    {
    var Ef_email = encodeURI (process.argv[2]);
    var Ef_pass = encodeURI (process.argv[3]);
    var Ef_dest = encodeURI (process.argv[4]);
    var Ef_guid = encodeURI (process.argv[5]);
    var post_data = ("f_email=" + Ef_email +
                    "\&" + "f_pass=" + Ef_pass +
                    "\&" + "f_dest=" + Ef_dest +
                    "\&" + "f_guid=" + Ef_guid);
    // Options to be used by request 
    var options = {
        host: _SERVER,
        port: '80',
        path: '/DCSM/tokenP10.php',
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            'Content-Length': Buffer.byteLength (post_data)
            }
        };
    // console.log ("clientEx.js using " + _SERVER + ":" + options.port + options.path);
    // request the token from the host
    try
        {
        var req = http.request (options, callback);
        req.write (post_data);
        req.end();
        }
    catch (error)
        {
        fs.writeFileSync ("temp.lst", "Host access failed\n", 'utf8');
        }
    }

您应该能够使其适应您的需求。