通过 AJAX 将高分添加到数据库

Posted

技术标签:

【中文标题】通过 AJAX 将高分添加到数据库【英文标题】:Adding highscore via AJAX to a database 【发布时间】:2016-06-02 07:57:35 【问题描述】:

我创建了一个画布游戏并将其放置在网站中。当玩家获得高分时,我想将新的高分发布到我创建的数据库中。我的游戏的部分脚本(我要发送到高分数据库的位)如下:

var scoreArray = [];

$.get('api/listScores.php', function(myData)

    $.each(myData, function(name, val)
        console.info(name);
        console.info(val);
        var temphtml = "";
        //loop through the data
        $.each(myData, function(name, val)
            //store a reference to the score
            scoreArray.push(val);
            tempHTML +='<li>';
            tempHTML +='<span>';
            tempHTML += val.dbScore;
            tempHTML +='</span>'
            tempHTML +='<span>'
            tempHTML += val.dbPlayer;
            tempHTML +='</span>'
            tempHTML +='</li>'
        );
        $('.highScores').html(tempHTML);
    );

    // scoreArray now has a value
    var lastItem = scoreArray.pop();

    //check if function scope 'score' or global scope 'score' is greater than the object 'lastItem.dbScore'.
    if (score > lastItem.dbScore)
    
        $.post('api/addNewHighScore.php', 
               
                gamePlayer: playerName,
                gameScore: score
             
        );
    
);

在“api/listScore.php”中,我按降序列出了我的数据库的行。

我目前遇到的错误是:

未捕获的类型错误:无法读取未定义的属性“dbScore”

此错误指的是以下行:

if (score > lastItem.dbScore)

这是否意味着 scoreArray.pop() 不起作用? 我应该以不同的方式解决这个问题吗?

抱歉,不是所有的代码都在这里,有很多源代码文件和代码行我不能放在一篇文章中。

【问题讨论】:

您是否将 lastItem 登录到控制台并检查了它所持有的内容? 【参考方案1】:

您的get 是异步的,因此lastItem 在实际数组被填充之前被采用。将您的线路设置 lastItem 和检查/设置高分移动到您的获取请求回调的末尾。

【讨论】:

非常感谢这解决了我的错误,但仍然存在问题,但这是与其他代码位有关,它正在变成这个项目的正确噩梦。再次感谢。 很高兴,很高兴能帮上忙。 :)【参考方案2】:

Pop 删除数组的最后一个元素,它不选择最后一个元素

https://developer.mozilla.org/en/docs/Web/javascript/Reference/Global_Objects/Array/pop

【讨论】:

array.pop 返回的值是从数组中移除的项

以上是关于通过 AJAX 将高分添加到数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Ajax 将复选框信息添加到 MySQL 数据库?

Arduino - 将高分写入 SD 卡上的 SQLite 数据库

关于AJAX的简单示例问题,高分!~

高分求助:js缓存问题,急!

用JS怎么把接口里数据读出来。 求大神。。。 给高分

将 AJAX/jQuery 添加到简单的 PHP 表单