javascript - Ajax 与表单方法作为 Node.js 中的 post

标签 javascript ajax node.js

我在使用 Node.js 的表单中遇到 Ajax 问题,我正在开发一个简单的 Node.js 货币转换器应用程序并使用 Ajax 在前端 (HTML) 上填充数据。然而它不起作用,非常感谢任何帮助。谢谢。

最佳答案

1。前端

改变这个

xmlhttp.open("GET","http://localhost:9099/", true); 

xmlhttp.open("POST","http://localhost:9099/", true); 

因为您的后端服务器接受 POST 来获取答案。

2。后端

从底部删除response.endresponse.writeHead,并将其移动到您要计算store的位置。

您的最终代码:

http.createServer(function(request, response) {
  switch (request.method) {
    case 'POST':
      if (request.url === "/") {
        var requestBody = '';
        request.on('data', function(data) {
          requestBody += data;
          if (requestBody.length > 1e7) {
            response.writeHead(413, {
              'Content-Type': 'text/plain'
            });
            response.end('Request Entity is too large');
          }
        });

        request.on('end', function(data) {
          console.log(requestBody);
          var formData = qs.parse(requestBody);

          var requestBofy = '';

          // I renamed the callback parameter to response2
          https.get('https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml?8f65cd5d1af1727c40d2a89a31c6a0f1', function(response2) {
            if (response2.statusCode >= 200 && response2.statusCode < 400) {
              response2.on('data', function(data_) {
                requestBofy += data_.toString();
              });
              response2.on('end', function() {
                console.log(requestBofy);
                parser.parseString(requestBofy, function(err, result) {
                  console.log('FINISHED', err, result);

                  var xml = requestBofy;

                  var parseString = require('xml2js').parseString;
                  parseString(xml, function(err, result) {
                    var jFile = JSON.stringify(result);

                    var parsedResponse = JSON.parse(jFile);
                    var rateHUF = parsedResponse['gesmes:Envelope']['Cube'][0]['Cube'][0]['Cube'][6]['$'].rate;
                    var rateINR = parsedResponse['gesmes:Envelope']['Cube'][0]['Cube'][0]['Cube'][22]['$'].rate;
                    var store = 'No value';
                    if (formData.vSelectedValue == 'HUF' && formData.vSelectedValue2 == 'INR') {
                      store = Math.round(formData.vFirstNo * (rateINR / rateHUF));
                    } else {
                      store = Math.round(formData.vFirstNo * (rateHUF / rateINR));
                    }

                    // Your response should end here
                    response.writeHead(200, {
                      "Content-Type": "text/html"
                    });
                    response.end('Your Answer: ' + store);

                  });

                });
              });
            }
          });

        });
      } else {
        response.writeHead(404, {
          'Content-Type': 'text/plain'
        });
        response.end('404 - Page not found');
      }

      break;
    case 'GET':
      if (request.url === "/") {

        getFileContent(response, 'public/home.html', 'text/html');

      } else {
        response.writeHead(404, {
          'Content-Type': 'text/plain'
        });
        response.end('404 - Page not found');

      }
      break;

    default:
      response.writeHead(404, {
        'Content-Type': 'text/plain'
      });
      response.end('404 - Page not found');

  }

}).listen(9099);

关于javascript - Ajax 与表单方法作为 Node.js 中的 post,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41394561/

相关文章:

node.js - 将身份验证快速应用为单独的微服务

javascript - 如何从父原型(prototype)JS继承权

javascript - PHP 通过 AJAX 和 Async 在 Javascript 中

javascript - ReactJS 无法代理来自本地主机 :3000 to localhost:3003 的请求

php - 使用 PHP 和 jQuery 进行 ReCaptcha 验证

javascript - 将 JS 注入(inject) Literal 并在页面加载后触发

javascript - (node.js) 如何从远程服务器获取cookie?

javascript - 在 Acrobat JS API 中将透明颜色设置为 strokeColor 会导致黑色边框

javascript - 在我的图标上方绘制蓝色小方 block

javascript - 带有 moustache.js 的内容相关模板/部分