0

我正在使用 html、js、ajax 和 php 创建一个二十一点游戏。当玩家第一次加载游戏时,页面上会出现一个提示询问名称,这会转到 name.php,它会检查用户名是否在数据库中。如果没有,它会添加它。无论哪种情况,它都会在屏幕上显示玩家的姓名和银行总数。在我添加代码的下一部分之前,我的这部分代码运行良好。

当用户点击“hit”按钮时,hit.php 被调用,它现在应该只是从牌组表中拉出 1 张牌(稍后将完全实现 hit)并将其放置在屏幕上的“玩家”div 中. 但是,现在我有 2 个 ajax 调用,什么都没有发生,包括玩家姓名的原始提示。

第二次通话是否以某种方式干扰了第一次通话?

任何关于我应该如何处理 ajax 调用的建议将不胜感激。

var username;
var playerName = "";
var playerBank = 0;
var playerCard;
var playerHandValue = 0;
var dealerHandValue = 0;
var randomCardNumber;

function checkName() {
username = prompt("Welcome to Blackjack.\n Please enter your username");
if(document.getElementById('playerName').value == null) {
    ajaxName();
}   
click();
}

function printName() {
return playerName;
}

function printBank() {
return playerBank;
}
function ajaxName() {
var uName = username;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttpN=new XMLHttpRequest(); 
} 
else {// code for IE6, IE5 
    xmlhttpN=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttpN.onreadystatechange=function() { 
    if (xmlhttpN.readyState==4 && xmlhttpN.status==200) { 
        var elements = xmlhttpN.responseText.split("|");
        playerName = elements[0];

        playerBank = elements[1];
        document.getElementById('playerName').innerHTML = printName();
        alert(playerName);
        document.getElementById('playerBank').innerHTML = printBank();

    }
} 
xmlhttpN.open("POST","name.php",true); 
xmlhttpN.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlhttpN.send("player="+username);
}
function click() {
document.getElementById('hit').onclick = function(){ ajaxButton(this);};
document.getElementById('stand').onclick = function(){ ajaxButton(this);};
document.getElementById('raiseBet').onclick = function(){ ajaxButton(this);};
document.getElementById('newGame').onclick = function(){ ajaxButton(this);};
}
function ajaxButton(buttonClicked) {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttpB=new XMLHttpRequest(); 
} 
else {// code for IE6, IE5 
    xmlhttpB=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.onreadystatechange=function() { 
    if (xmlhttpB.readyState==4 && xmlhttpB.status==200) { 
        var elements = xmlhttpB.responseText;
        if(buttonClicked.innerHTML == "HIT") {
            randomCardNumber = randNumber(1,52);
            playerCard = elements[0];
            document.getElementById('player').innerHTML = displayCard();
            xmlhttpB.open("POST","hit.php",true); 
            xmlhttpB.setRequestHeader('Content-type','application/x-www-form-urlencoded');
            xmlhttpB.send("card_id="+randomCardNumber);
        }
    }
if(buttonClicked.innerHTML == "STAND") {
    alert("stand");
}
if(buttonClicked.innerHTML == "RAISE BET") {
    alert("raise bet");
}
if(buttonClicked.innerHTML == "NEW GAME") {
    alert("new game");
}
}
4

1 回答 1

1

您的浏览器中没有报告任何 JavaScript 错误,并且根本没有出现提示,并且单击 hit 时没有任何反应?听起来好像您根本没有调用 checkName() 或 click() 函数。您最近是否将它们重构为以前没有的方法?

在我看来, checkName 应该在页面加载后立即出现,所以如果还没有,请尝试在页面底部的脚本块中调用它。

于 2012-12-05T05:22:40.067 回答