0

我正在运行一个 Wordpress 网站,并试图从我的 Javascript 代码中调用 PHP 方法。

点击按钮时,将saverFoo()调用 Javascript 方法,并尝试调用 PHP 方法save_image_data()

      function saverFoo() {
        var dataURL = canvas.toDataURL();
        <?php echo save_image_data(dataURL); ?>;
      }

      function loaderFoo() {  
        var loadedImage = <?php echo loadimagedata(); ?>;
        console.log(loadedImage);
      }

PHP 方法的实现在function.php文件中,只是试图在用户的元数据中保存一些图像数据(dataURL)

    function save_image_data($imageData) {
       global $current_user;
       update_user_meta( $current_user->ID, 'user_design', $_POST['$imageData']);
    } 

     function loadimagedata() {
       global $current_user;
       $old_notes = get_user_meta($current_user->ID, 'user_design', true);
       return $old_notes;
     } 

在 Chrome 中检查我的网页,当我尝试记录它时,向我显示loaderFoo ()(javascript) 应该调用loadimagedata()(php) 的空白空间,并且loadedImage是一个未定义的变量,例如:

      function loaderFoo() {  
        var loadedImage = ;
        console.log(loadedImage);
      }

不知道我在这里犯了什么根本性错误。

4

2 回答 2

1

PHP 不能那样工作。它是一个预处理器。这一切都在服务器端运行和完成,并将生成的文本/html/二进制数据/任何内容发送到客户端。在浏览器的内容类型的情况下,text/html将加载它、解析它、渲染它,然后运行任何被调用的 javascript。

如何像这样内联混合 PHP 和 JavaScript 就是使用 PHP 来填充变量。例如

alert("<?php print($_SERVER['SCRIPT_FILENAME']); ?>");

会起作用,因为客户会看到

alert("/path/to/foo.php");

并为用户呈现。

要真正使用 JavaScript 与 PHP 交互,您需要考虑使用基于 http 的 REST 类型服务,并且可能是各种流行的工具集之一,如 Angular、Vue 等。

于 2019-09-14T04:38:40.203 回答
1

永远记住 PHP 在服务器端运行,而 javascript 在客户端运行。所以我们在这里有一个命令,服务器接收到请求 PHP 处理它应该处理的内容并呈现页面,只有这里 Javascript 会被执行。

在这个例子中,当 'saverFoo()' 函数被执行时,这个函数<? Php echo save_image_data (dataURL); ?>;已经被写在了页面上。PHP将无法获取dataURL变量中包含的信息,不是这样的。为此,我们必须使用所需信息向服务器发出请求,但使用“图像”并非易事,因为使用普通字符串字段时帖子的大小有限制。

function saverFoo () {
    var dataURL = canvas.toDataURL ();
    <? php echo save_image_data (dataURL); ?>;
}
于 2019-09-14T04:49:21.807 回答