javascript - 从 Javascript 文件调用 PHP 代码

标签 javascript php jquery html

我是一个JS/PHP新手,我不知道如何解决以下问题;

首先是代码

PHP代码:

class User {

   private $mysqli;

   function __construct($connection) {
       $this -> mysqli = $connection;
   }

   public function updateUsername($oldusername, $newusername) {
       $statement = $this -> mysqli -> prepare('UPDATE user SET username = ? WHERE username = ?');
       $statement -> bind_param('si', $oldusername, $newusername);
       $result = $statement -> execute();

       if (!$this -> mysqli -> commit()) {
           return false; // maybe beacuse an username already exists..
       } return true;
}

Javascript 代码:

var oldusername;

$(document).on("click", "span.editusername", function () {
    var txt = $(".username").text();
    oldusername = txt;
    $(".username").replaceWith("<input class='username' style=\"border: 1px solid rgb(231, 231, 231); padding: 3px 5px; color: rgb(81, 81, 81); \"/>");
    $(".username").val(txt);

    $(this).text('editing..');
    $(this).css('text-decoration', 'none');

    $(".username").focusToEnd();
});

$(document).on("blur", "input.username", function () {
    var newuser = $(this).val();
    $(this).replaceWith("<label class='username'></label>");
    $(".username").text(newuser);

    // Here I want to call the PHP updateUsername function with the two arguments: oldusername, newuser: booleanResult = updateUsername(oldusername, newusername);

    $('.editusername').text('edit');
    $('.editusername').css('text-decoration', 'underline');
});

HTML 代码草稿:

 <h1 id="user-displayname"><label class="username"><?php
            if($_SESSION["s_username"]) { echo $_SESSION["s_username"]; } ?></label></h1>
 <div class="sub-header-links">
    <span class="editusername">edit</span>
    <a><?php
            if($_SESSION["s_user_id"]) {
                ?>
                    <a href="logout.php" title="Logout">logout
            <?php } ?></a>
 </div>

如下图所示,如果我点击“编辑”标签,用户名标签将变成一个可编辑的文本区域。更改后,通过 PHP 函数 (updateUsername) 更新标签和数据库。

enter image description here

enter image description here

textarea 和 label 的逻辑由 JS 代码处理,而对 DB 的调用应该由 PHP 代码执行,但我不知道如何从 Javascript 文件调用 PHP 函数,我也不会甚至知道这是不是最好的方法,或者至少是明智的方法。

谢谢

最佳答案

看看http://api.jquery.com/jquery.ajax/ AJAX 正是为了满足您的要求而设计的 - 允许客户端运行服务器端代码。

此外,您的 updateUsername 方法绑定(bind)了一个字符串和一个整数,但看起来您传递的是两个字符串。

$statement -> bind_param('si', $oldusername, $newusername);

应该是……

$statement -> bind_param('ss', $oldusername, $newusername);

关于javascript - 从 Javascript 文件调用 PHP 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24438203/

相关文章:

php - 动态 PHP 内容,存储它并每天执行而不是每次加载页面?

javascript - 在按下 keyup 时使用 jquery 从最近的 span 标记中获取文本

javascript - Jquery DataTables - td 中多个元素的列过滤

javascript - 使用 jQuery 转义 HTML

javascript - 如何使用 MongoDB 和 Mongoose/Express 将时间日期 UTC 转换为本地,反之亦然?

php - PDO: "Invalid parameter number"当用相同的值替换多个参数时

php - 插入语句和状态下拉列表不起作用

javascript - Angular - 选择文件时上传文件( native 实现)

javascript - 在函数调用的参数中分配变量名

php - 使用 javascript 发送 POST