【问题标题】:500 (Internal Server Error) localhost server500(内部服务器错误)本地主机服务器
【发布时间】:2022-01-10 18:24:20
【问题描述】:

每当我尝试调用服务器时,它都会给我一个错误提示:

POST http://localhost:3000/post?data={%22action%22:%22singlePlayer%22,%22player_Choice%22:%220%22} 500(内部服务器错误)

这是html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" type="text/css" href="stylesheet.css" title="style" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="client.js"></script>
    <title>Document</title>
</head>
<body>
    <div id = "container">
        <nav>
            <img src = "" id = "logo" class = "logo">
        </nav>
        <h1>WELCOME</h1>
        <div class = "buttonContainer">
            <button>START</button>
        </div>
        <footer>

        </footer>
    </div> 
</body>
</html>

客户端js

const rps = ["ROCK", "PAPER", "SCISSOR"];

var peg_selected = 0;
var attempt_code;
var current_attempt_id;
var start = new Date();
var btn_initial_top;
//var url = "http://indigo.eecs.yorku.ca:3000/post";
var url = "http://localhost:3000/post";



var myName;

window.onload = function()
{
    $("button").click(function(){
        var newDiv = document.createElement("div");
        $("#container").replaceWith(newDiv);
        $(newDiv).attr("id", "container");
        $(newDiv).append("<h1>1P or 2P</h1>")
        var buttonDiv = document.createElement("div");
        $(newDiv).append(buttonDiv);
        $(buttonDiv).attr("class", "buttonContainer");
        var buttonDiv2 = document.createElement("div"); 
        $(buttonDiv).append(buttonDiv2);
        $(buttonDiv2).attr("class", "inner-buttonContainer");
        //create Two buttons for selecting numbers of players
        for(i = 1; i <= 2; i ++){
            var newButton = document.createElement("button");
            $(buttonDiv2).append(newButton);
            $(newButton).attr("id", i);
            $(newButton).html(i + " Player");
        }
        $("button").click(function(event){
            playerNumberSelection(event.target.id);
        });
    });
    
}

function playerNumberSelection(n){
    if(n==1){
        var newDiv = document.createElement("div");
        $("#container").replaceWith(newDiv);
        $(newDiv).attr("id", "container");
        var newNav = document.createElement("nav");
        $(newDiv).append(newNav);
        var scoreboardDiv = document.createElement("div");
        $(scoreboardDiv).attr("class", "scoreBoard");
        $(newNav).append(scoreboardDiv);
        //create scoreboard
        var playerPoint = document.createElement("h1");
        $(playerPoint).attr("id", "playerPoint");
        var divider = document.createElement("h1");
        var computerPoint = document.createElement("h1");
        $(computerPoint).attr("id", "computerPoint");
        $(scoreboardDiv).append(playerPoint);
        $(scoreboardDiv).append(divider);
        $(scoreboardDiv).append(computerPoint);
        $(playerPoint).html("0");
        $(divider).html(":");
        $(computerPoint).html("0");
        //create div buttons for rock paper scissor
        var newDiv2 = document.createElement("div");
        $(newDiv2).attr("class", "singleSelection");
        $(newDiv).append(newDiv2);
        var buttonDiv = document.createElement("div");
        $(newDiv2).append(buttonDiv);
        $(buttonDiv).attr("class", "buttonContainer");
        for(i = 0; i < 3; i ++){
            var newButton = document.createElement("button");
            $(buttonDiv).append(newButton);
            $(newButton).attr("id", i);
            $(newButton).html(rps[i]);
        }
        $("button").click(function(event){
            singlePlayer(event.target.id);
            console.log(rps[event.target.id]);
        });

    }else{
      //$("#container").load("multiPlayer.txt")
    }


}

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


/*
 * Event handler for server's response
 * @param data is the json format string sent from the server
 */
function response(data, status){
    var response = JSON.parse(data);
    console.log(data);
    if(response['action']=='singlePlayer'){
        computerPoint = response['computerPoint'];
        playerPoint1 = response['playerPoint1'];
        //display the result for each points
        $("#playerPoint").html(playerPoint1);
        $("#computerPoint").html(computer);
      }
}

服务器 js

var code_length = 5;    // set this number between 1 to 5
var num_balls = 8;      // this number must be greater or equal to code_length
var num_attempts = 8;   // change this number to have less or more attempts

var codes = {}; // an empty JS object, later it's going to store the code for each end-user

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

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']);
    if (z['action']=='singlePlayer') {
        var player_Choice = z['player_Choice'];
        singlePlayer(player_Choice);
        var jsontext = JSON.stringify({
            'computerPoint': computer,
            'playerPoint1': playerPoint1
        });
    } else {
        res.send(JSON.stringify({ 'msg': 'error!!!' }));
    }
    res.send(jsontext);
}).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);
}

我知道我的代码不正确只是不知道出了什么问题,因为我是这篇文章和节点 js 的新手

【问题讨论】:

  • 这个错误有什么更具体的吗?
  • woaps 我忘了包含变量,例如 var playerPoint1 = 0; var playerPoint2 = 0; var计算机= 0; var 游戏结束 = 假;在 html 上,但我有它
  • @evolutionxbox 我的意思是有这个 jquery.min.js:2 我不认为可以解决任何问题
  • 服务器的日志呢?
  • @evolutionxbox 新快递客户端收到:{ action: 'singlePlayer', player_Choice: '2'} WIN

标签: javascript html jquery node.js


【解决方案1】:

在您的 server.js 文件中,删除/注释 alert("LOSE");alert("WIN");。如果您想提醒结果,请在 jsontext 中返回 winlose 值并在 client.json 中提醒。

还记得添加您提到的必需变量:var playerPoint1 = 0; var playerPoint2 = 0; var computer = 0; var gameEnd = false;

您没有在回复中返回'action': 'singlePlayer',因此,if 条件 始终为 false,并且您的页面中的分数不会改变。

此外,您的player_Choices 从零开始(0、1 和 2),但在您的服务器中(检查获胜者),选择从 1 开始。

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 2015-10-22
    • 2022-08-03
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    相关资源
    最近更新 更多