在二十一点中多次调用Ajax

时间:2012-12-05 03:44:06

标签: javascript ajax

我正在使用html,js,ajax和php创建一个二十一点游戏。当播放器首次加载游戏时,页面上会出现一个提示,要求输入名称,这将转到name.php,它会检查用户名是否在数据库中。如果没有,它会添加它。在任何一种情况下,它都会将玩家的名字和银行总数放在屏幕上。我的代码的这部分工作正常,直到我添加了代码的下一部分。

当用户点击“点击”按钮时,会调用hit.php,现在只需要从牌组中拉出1张牌(稍后将完全实现点击)并将其放入“玩家”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");
}
}

1 个答案:

答案 0 :(得分:1)

您的浏览器中未报告任何JavaScript错误,并且根本没有提示,当您点击“点击”时没有任何反应?听起来好像你根本没有调用checkName()或click()函数。你以前没有将这些重构为最近的方法吗?

在我看来,一旦页面加载就会出现checkName,所以如果它还没有,请尝试在页面底部的脚本块中调用它。