簡體   English   中英

用JS發送POST請求,用Node處理數據

[英]Sent a POST request with JS, and handling the data with Node

我正在向網站添加聯系我部分。 我希望能夠使用 JS 從表單發送數據,然后使用 Node.js 接收和處理數據。 我知道有一些框架和庫可以處理這些事情,但我想從頭開始構建它,以便我更好地了解正在發生的事情。

我目前有一部分 JS(見下文)正在獲取表單數據,並將其作為 POST 請求發送到節點腳本,但我似乎無法理解節點發生的事情,或者如何使用節點腳本接收數據。 非常感謝為我指明正確方向的任何幫助。

 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}`); }) })

使用此代碼創建服務器並在控制台中檢查不同請求屬性的登錄。

const http = require('http');

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

http://localhost:3000/發出 GET 和 POST 請求並查找methodheaders等。

在此處此處查看更多信息

我也喜歡從頭開始寫作。 這是從命令行調用以獲取令牌的工作代碼。

//  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');
        }
    }

您應該能夠根據自己的需要進行調整。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM