【问题标题】:What is the most efficient way for PHP and JavaScript to transfer data? [closed]PHP 和 JavaScript 传输数据的最有效方式是什么? [关闭]
【发布时间】:2016-08-25 13:25:44
【问题描述】:

我见过许多不同的传输 javaScript 和 PHP 数据的方法,但我质疑效率和精度。我的意思是,比如说你有一个有 10 个级别的 JavaScript 平台游戏(游戏)。您有许多用户,每个用户都拥有/拥有不同的帐户。你想制作这个游戏,以便当用户关闭浏览器选项卡或保存并想稍后玩它时;他/她不必从级别 1 重新启动。相反,您希望它在用户保存时将用户保存的当前级别编号存储在他或她的帐户 data 中的 mySQL 数据库中。 现在,唯一的问题是,用户完成的关卡数量存储在 javaScript 变量中,但是您需要以某种方式在 PHP 中传输/获取该变量才能这样做,您将如何做那?我见过 document.write (),但我认为这不是解决这个问题的最有效方法。 现在,只有在我想出一种不同的方法来做到这一点后,我才会质疑效率,因为我使用的当前方法缺乏更多涉及的背靠背计算。那么,一般来说,还有没有其他更有效、更灵活的解决方案呢?

【问题讨论】:

  • 欢迎来到 SO。请访问help center 了解为什么这个问题可能会作为题外话被关闭

标签: javascript php data-transfer


【解决方案1】:

我的方法是在用户成功完成关卡后通过 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。有很多教程如何将它与准备好的语句一起使用。

【讨论】:

  • 好点,但问题是,就像我说的,我需要使用 mySQL,因为每个用户都有不同的帐户。
  • mysql与ajax调用无关。您可以使用 javascript 进行 ajax 调用,然后在 php 和 mysql 中进行处理。
  • 这就是我要问的问题,如何将(在这种情况下)AJAX 与 php 连接起来;因为最可能的 AJAX 方法是 jQuery $.ajax 函数。
  • 感谢埃里克的帮助!现在它工作正常!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-07
  • 1970-01-01
  • 2013-03-12
相关资源
最近更新 更多