Express服务器跳过if语句并发送对POST请求的响应

问题描述 投票:0回答:1

我正在使用具有客户端-服务器通信接口的JS制作战舰游戏。

在我的客户端中,我将用户在CPU游戏板上单击的磁贴发送到服务器,以检查它是HIT还是MISS,并取决于服务器是否响应,游戏板会在何时更新以显示是否有飞船被击中与否。

这是服务器响应命中/未命中的部分:

        // generate cpu attack
        var tileToAttack = cpuAttack(dataIn['cpuhitship']);

        // cpu tile being attacked by player
        var tileXY = dataIn['tileattacked'];        

        // check if a CPU ship placed on the selected tile
        if(allCoords.includes(tileXY)){

            // remove tile from array
            var index = allCoords.indexOf(tileXY);
            if(index != -1){
            allCoords.splice(index, 1);
            } 

            // check if ship is destroyed
            cpuShipDestroyed(tileXY);            

            // send back hit response and cpu attack
            var jsontext = JSON.stringify({
                task:'cpuHit',                      
                tilehit:tileXY,
                message:'HIT! BOOOOM!',
                carrierlength:carrier.length,
                battleshiplength:battleship.length,
                submarinelength:submarine.length,
                cruiserlength:cruiser.length,
                patrolboatlength:patrolboat.length,
                cpucoords:allCoords.length,
                cpuattack:tileToAttack                            
            });
            res.send(jsontext);            
        }    
        else{

            // send back miss response and cpu attack
            var jsontext = JSON.stringify({
                task: 'cpuMiss',
                tilemiss:tileXY,
                cpuattack:tileToAttack,                               
                message:'MISS! All you hear is the missile hitting water!'
            });

            res.send(jsontext);
            console.log(jsontext);          
        } 

我正在发送的这个JSON对象

// get coordinates of the tile being attacked
var attackXY = parseInt(cpuTile.substring(8, 10));

var data = 
            {
                task:'playerAttack',                
                tileattacked:attackXY      
            };             

 $.ajax({
                url: url,
                method: 'POST',
                data: data,
                dataType: 'json' 
              }).done(function(response) {


tileXY是对应于游戏板上图块的整数。示例12将是1个图块X和2个图块Y。

allCoords存储与CPU装运位置相对应的17个整数。

但是,即使我确实点击了正确的图块,我也只会发回未命中响应;它会跳过if语句,并且每次都转到else {}部分。关于可能发生什么的任何线索?

json express post server client
1个回答
0
投票

已解决。我必须使用parseInt()。

© www.soinside.com 2019 - 2024. All rights reserved.