PHP和JavaScript传输数据的最有效方式是什么?


What is the most efficient way for PHP and JavaScript to transfer data?

我见过许多传输javaScript和PHP数据的不同方法,但我质疑它们的效率和精度。我的意思是,假设你有一款有10个关卡的javaScript平台游戏。您有许多用户,每个用户都有/拥有不同的帐户。你希望创造这款游戏,当用户关闭浏览器标签或保存并希望稍后再玩它时;他/她不需要从1级重新开始。相反,您希望在用户保存时,将用户保存的当前级别号存储在其帐户数据中的mySQL数据库中。现在,唯一的问题是,用户完成的级别数,存储在一个javaScript变量中,但你需要以某种方式在PHP中传输/获取该变量,以便这样做,你会怎么做?我看过文件。写(

我的方法是在用户成功完成关卡后通过AJAX调用保存完成的关卡。这样你就不必担心用户会关闭浏览器,也就是说,如果他关闭了浏览器,他还没有完成关卡,那么他必须重复他没有完成的最后一个关卡。

编辑:

JS脚本:

$.ajax({
  method: "POST",
  url: "update_finished_level.php",
  data: { user_id: "1", level_finished: "4", some_other_parameter: "some value" }
})
.done(function( msg ) {
    if(msg == 1) {
        // OK
    } else {
        // SOMETHING WENT WRONG
    }
});

PHP脚本(假设您正在使用mysqli连接到您的数据库):

$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");
if ($link->connect_errno) {
    printf("Connect failed: %s'n", $mysqli->connect_error);
    exit();
}
if($mysqli->query("UPDATE user SET level_finished = " . $_POST['level_finished'] . " WHERE user_id = " . $_POST['user_id']) === TRUE) {
    echo 1;
} else {
    echo 0;
}

注意:你必须转义你从用户那里得到的任何输出,所以至少使用mysql_real_escape_string函数,顺便说一句,它不再安全了。

我建议你使用PHP的PDO库:http://php.net/manual/en/book.pdo.php。有很多关于如何使用它的教程。