【发布时间】: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