【问题标题】:How to pass arguments from JS function to PHP code如何将参数从 JS 函数传递到 PHP 代码
【发布时间】:2021-05-13 14:28:11
【问题描述】:

我想将 js 函数参数“checklistNoteId”和“checklistNoteStatus”传递给 PHP 变量,这样我就可以更改数据库中的内容。我应该编写什么代码来传递这些参数?我试过这样做,但它不起作用。我的问题的一个例子如下:

编辑:我试过this,但没有帮助。

JS代码:

checklistFinishedBtn.onclick = function(e){
     let noteId = Number(e.target.parentNode.getAttribute('checklist-id'));
     if (checklistArray.checklistItems[noteId].isDone){
         changeChecklistNoteStatus(checklistArray.checklistItems[noteId].id, 0);
     } else {
         changeChecklistNoteStatus(checklistArray.checklistItems[noteId].id, 1);
     }
     }

PHP 代码:

<head>
<script>
    function changeChecklistNoteStatus(checklistNoteId, checklistNoteStatus){
        console.log(checklistNoteId);       //this returns 26 (which is correct)
        console.log(checklistNoteStatus);   //this returns 1 (which is correct)
        <?php
        //if I set these values manually, it works
        $status = "<script>document.write(checklistNoteStatus)</script>"; 
        $id = "<script>document.write(checklistNoteId)</script>";
        $sql = 'UPDATE checklist_notes SET isDone = :isDone WHERE id = :id';
        $statement = $pdo->prepare($sql);
        $statement->execute(['isDone' => $status,'id' => $id]);
        ?>
    }
</script>
</head>

此后,数据库保持不变。 (我正在尝试设置 id 为 26 的注释以在单击按钮时更改 isDone 变量。) 来自数据库的屏幕在这里:

【问题讨论】:

  • PHP 代码和 JavaScript 代码不能一起工作。当 JavaScript 代码运行时,PHP 代码已经运行。了解页面生命周期。您需要向后端提交表单或获取调用。

标签: javascript php database variables arguments


【解决方案1】:

了解客户端代码和服务器端代码之间的区别很重要。 PHP 是服务器端的,这意味着它会在发送到客户端之前在服务器上运行。 Javascript 是客户端,这意味着它会在客户端收到代码时运行。因此,javascript 永远无法直接向 PHP 写入任何内容,因为 PHP 脚本在客户端接收到网页之前就已经运行了。

为了将客户端发送回服务器,您需要发送一个请求。最常见的方法是使用带有method=POSTform 元素和指向您要接收的php 文件的action。这是一个简单的例子:https://www.w3schools.com/tags/att_form_method.asp

如果您希望它在后台运行,我建议您查找 AJAX 请求以及如何执行这些请求。这是相同的概念,但还有更多内容。

【讨论】:

  • 这很有帮助,那么,我应该使用 AJAX 请求来解决我的问题吗?还是我应该以完全不同的方式更新数据库数据?
  • AJAX 请求应该可以满足您的需求,所以从它开始吧。
猜你喜欢
  • 2012-04-18
  • 2018-12-23
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 2012-02-12
  • 2021-09-18
  • 2010-10-21
  • 1970-01-01
相关资源
最近更新 更多