0

我正在制作这个游戏,我正在使用 ajax 调用 php 从数据库中获取项目,但我收到一个错误,因此预加载器不会消失,当我查看资源时出现此错误Chrome:“未捕获的类型错误:无法读取 null 的属性‘团队’”。知道为什么要这样做吗?查询:

function appendTeam(){

$.ajax({

       url : _path + "/core/ajax.php",
       type : 'POST',
       data : { f: 'getTeam'},
       dataType : 'json',
       success :  function(data) {

        if(data) {


            return false;
        } else{
            var count = 0;
            $.each(data.team, function(i, c){
                // check
                if(!$('#'+c)) return true;
                var element = $('#'+c);
                $('input[name="s'+i+'"]').val(element.attr('id'));
                $('.slot.'+(i+1)).append(element);
                element.data('prevParent', $('.slot.'+(i+1)));
                count ++;

            });

            appendStatus(count);
            setTimeout(function(){
                $('#preloader').fadeOut('fast',function(){
                    $('#preloader').remove();
                    popUp('match');
                });
            }, 2000);


        }

    }
});
}

php:

if (isset($_POST['getTeam'])) {
$team = array();
$sql = mysql_query("SELECT * FROM accounts WHERE id = '1'")  or die(mysql_error());


while ($teams = mysql_fetch_array( $sql )) {

$chara1 = $team['cid1'];
$chara2 = $team['cid2'];
$chara3 = $team['cid3'];

}
$team = json_encode(array(
'chara1' => $chara1,
'chara2' => $chara2,
'chara3' => $chara3
));
echo $team;
}

如果他已经在这些 div 元素中选择了一个团队,我希望它与团队相呼应:

<div id="droppable_slots" class="current_team">
                    <div class="slot 1">1</div>
                    <input type="hidden" name="s0" value="10">
                    <div class="slot 2">2</div>
                    <input type="hidden" name="s1" value="7">
                    <div class="slot 3">3</div>
                    <input type="hidden" name="s2" value="3">
                </div>
4

2 回答 2

0

您正在寻找帖子数据中的错误键——它应该是“f”,而不是“getTeam”。(请注意,Ajax 调用正在发送data : { f: 'getTeam'}。)大概您的意思是:

if (isset($_POST['f']) && $_POST['f'] == 'getTeam') 

另一个错字:当if (data) return false数据时将返回 false —— 应该是相反的:

if(data && data.team) {
    // do stuff
}
于 2013-10-08T19:31:35.437 回答
0

我认为你的问题在这里:

if (data) {  
    return false;   // returns false if data exists
} else {
   // data does not exist in this block
   var count=0;
   $.each(data.team ...
   ... //
}

基本上,因为你的 if/else 块没有正确形成。这应该解决它...

if (!data) {
    return false;
} else {
    ... // work with data here
}

你也需要这个:

mysql_fetch_array($con, $sql);

如果要使用程序函数,则需要将连接资源 ($con = mysql_connect) 传递给函数。如果使用面向对象的方法,则不需要将资源作为参数传递。

于 2013-10-08T19:37:39.477 回答