【问题标题】:Cannot Get / Post无法获取/发布
【发布时间】:2022-01-10 16:17:41
【问题描述】:

我正在尝试将服务器端与 html 链接,但是每当我执行节点 server.js 并打开 html 时,都没有任何效果。我也尝试进入 http://localhost:3000/post 但我得到的唯一结果是无法获取/发布。

var playerPoint1 = 0;
var playerPoint2 = 0;
var computerPoint = 0;
var gameEnd = false;
var url = "http://localhost:3000/post";

$(document).ready(function() {
  $("button").click(function() {
    $("#container").load("playerNumber.txt");
  });
});

function playerNumberSelection(n) {
  if (n == 1) {
    $("#container").load("singlePlayer.txt");
  } else {
    $("#container").load("multiPlayer.txt")
  }
}

function multiPlayerGame() {
  $("#container").load("multiPlayerGame.txt");
  var firstName = document.getElementById("firstPlayerName").value;
  var secondName = document.getElementById("secondPlayerName").value;
  var playerOne;
  var playerTwo;
  var onePressed = false;
  var twoPressed = false;
  window.addEventListener('keydown', function(event) {
    keyPressed = event.key;
    if (!onePressed) {
      if (keyPressed == 'a' || keyPressed == 's' || keyPressed == 'd') {
        playerOne = keyPressed;
        console.log(playerOne);
        onePressed = true;
      }
    } else if (!twoPressed) {
      if (keyPressed == 'j' || keyPressed == 'k' || keyPressed == 'l') {
        playerTwo = keyPressed;
        console.log(playerTwo);
        twoPressed = true;
      }
    }
    if (onePressed && twoPressed) {
      console.log("yes")
      if (playerOne == 'a' && playerTwo == 'j' || playerOne == 's' && playerTwo == 'k' || playerOne == 'd' && playerTwo == 'l') {
        alert("TIE");
      } else if (playerOne == 'a' && playerTwo == 'l' || playerOne == 's' && playerTwo == 'j' || playerOne == 'd' && playerTwo == 'k') {
        alert(firstName + " WINS");
        playerPoint1++;
        $("#playerPoint1").html(playerPoint1);
      } else {
        alert(secondName + " WINS");
        playerPoint2++;
        $("#playerPoint2").html(playerPoint2);
      }
      onePressed = false;
      twoPressed = false;
    }
  });
}

function singlePlayer(choice) {
  $.post(
    url + '?data=' + JSON.stringify({
      'action': 'singlePlayer',
      'player_Choice': choice,
    }),
    response
  );
}

function response(data, status) {
  var response = JSON.parse(data);
  //if singlePlayer recieved
  if (response['action'] == 'singlePlayer') {
    computerPoint = response['computerPoint'];
    playerPoint1 = response['playerPoint1'];
    //display the result for each points
    $("#playerPoint").html(playerPoint1);
    $("#computerPoint").html(computer);
  }

}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container">
  <nav>
    <img src="" id="logo" class="logo">
  </nav>
  <h1>WELCOME</h1>
  <div class="buttonContainer">
    <button>START</button>
  </div>
  <footer>

  </footer>
</div>

服务器端js

var express = require('express');
var app = express();
var playerPoint1 = 0;
var playerPoint2 = 0;
var computer = 0;

var express = require('express');
var app = express();

app.post('/post', (req, res) => {
    res.header("Access-Control-Allow-Origin", "*");
    console.log("New express client");
    console.log("Received: ");
    console.log(JSON.parse(req.query['data']));
    var z = JSON.parse(req.query['data']);

    // check if the request action is singlePlayer
    if (z['action']=='singlePlayer') {
        var player_Choice = z['player_Choice'];
        singlePlayer(player_Choice);
        var jsontext = JSON.stringify({
            'computerPoint': computer,
            'playerPoint1': playerPoint1
        });
        console.log(jsontext);
        console.log(codes);
    } else {
        res.send(JSON.stringify({ 'msg': 'error!!!' }));
    }
}).listen(3000);
console.log("Server is running!");

function singlePlayer(player_Choice){
    var comp = randomGenerator();
        if(player_Choice==comp){
            console.log("TIE");
        }else if(player_Choice==1&&comp==2||player_Choice==2&&comp==3||player_Choice==3&&comp==1){
            alert("LOSE");
            computer++;
        }else{
            alert("WIN");
            playerPoint1++;
          }
}

function randomGenerator(){
    return Math.floor(Math.random()*3 + 1);
}

游戏是剪刀石头布我只尝试了单人部分,因为我什至无法运行它。请帮忙

【问题讨论】:

标签: javascript html jquery node.js server


【解决方案1】:

您为什么希望这会起作用?代码的所有部分都有很多问题。

这不是您向 API 发出请求的方式。我建议了解fetchawait/async,并在 POST 请求的正文中提供数据。

在定义变量时不要使用关键字var - 而是使用constlet (https://hackernoon.com/why-you-shouldnt-use-var-anymore-f109a58b9b70)

【讨论】:

  • 老实说我不知道​​。我的教授给了我们一个实验室,就像我所做的那样,他在本地主机上工作。当我尝试使用节点 js 运行该程序时,该程序不会。服务器正在运行,但不会与 html 部分连接。
  • 我希望它先与 html 连接,然后如果可能的话继续处理其他问题
猜你喜欢
  • 1970-01-01
  • 2020-03-26
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
相关资源
最近更新 更多