0

我搜索了几乎类似的问题,但没有一个给我正确的答案。我在 if else 语句中有一个完整的file_exist代码。但是当我将它放在一个函数中时,它就不再起作用了。这是代码:

if (file_exists($_SERVER['DOCUMENT_ROOT']."/Project/events/folder-01/event-01.txt")) {  

            $myFile = ($_SERVER['DOCUMENT_ROOT']."/Project/events/folder-01/event-01.txt");
            $fh = fopen($myFile, 'r');
            $theData = fread($fh, filesize($myFile));
            fclose($fh);

            echo $theData;

         echo "The file exists." ;                      
    }

    else {
        echo "The file $filename does not exist";
    }

当我将它放在一个不起作用的函数中时:

function readexisting(){
    if (file_exists($_SERVER['DOCUMENT_ROOT']."/Project/events/folder-01/event-01.txt")) {  

        $myFile = ($_SERVER['DOCUMENT_ROOT']."/Alchemy/events/folder-01/event-01.txt");
        $fh = fopen($myFile, 'r');
        $theData = fread($fh, filesize($myFile));
        fclose($fh);

        echo $theData;

         echo "The file exists." ;                      
    }

    else {
    echo "The file $filename does not exist";
    }

}

另外,我想在图像点击事件中调用该函数。如果有帮助,这是代码:

<div class="Thumb popup_element shadow clearfix" id="u2413"><!-- group -->
    <img class="grpelem" id="u2471" alt="This Week's Events" src="images/blank.gif" onclick="readexisting()"/><!-- state-based BG images -->
   </div>

我希望你能帮我解决这个问题。非常感谢你!

4

6 回答 6

2

分配一个 JavaScript 事件处理程序,onclick=而不是 PHP 函数。

我不知道您的代码应该做什么,但也许您可以在将某些内容发布到您的文件时执行该函数。

于 2013-09-30T08:24:53.550 回答
2

您试图以与 JavaScript 函数相同的方式调用 PHP 函数。这只是行不通。

onclick="readexisting()"

你只能像这样调用 JavaScript 函数。

于 2013-09-30T08:24:57.160 回答
0

您不能从 HTML/JS 调用 PHP 函数。当 HTML/JS 开始在客户端工作时,PHP 已经完成了它在服务器端的工作。

关于 file_exists - 它不会改变它在功能内外的行为。所以问题应该在fil路径中。可能是因为您在第一种情况下有 /Project/events/folder-01/event-01.txt,在第二种情况下有 /Alchemy/events/folder-01/event-01.txt?(炼金术!=项目)

于 2013-09-30T08:32:41.570 回答
0

onclick= 用于调用 javascript 函数或运行 javascript 代码,您不能使用调用 php 函数onclick="",但正如您所说,您在没有函数的情况下获得所需的输出只是因为当您单击图像时,它只会呈现具有您的第一个代码的同一页面并且当您将此代码移动到一个函数时,并且由于函数不是自己运行的,您需要调用它们,这就是为什么在第二种情况下您没有得到预期的输出。

如果您想使用 javascript 调用 php 函数,请使用 AJAX

使用 javascript 调用 PHP 函数

创建一个测试文件夹 ex。ajax (你的主机/ajax/)

view.php (你的主机/ajax/view.php)

<html>
    <head>
        <title>Simple AJAX Example</title>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    </head>
    <body>
        <div class="Thumb popup_element shadow clearfix" id="u2413"><!-- group -->
          <img class="grpelem" id="u2471" alt="This Week's Events" src="images/blank.gif" onclick="readexisting()"/><!-- state-based BG images -->
        </div>

        <script>
            function readexisting() {
                 jQuery.ajax({
                    type: "POST",
                    url: 'controller.php',
                    data: {action: 'readexisting', arguments: 'your data'}, 
                    success:function(data) {
                                         data = data.split("~:~");
                                         alert(data[0]); // message
                                         alert(data[1]); // content
                    }
                });
            }
        </script>
    </body>
</html>

控制器.php

<?php
    include_once("model.php");

    $obj = new Model();

    switch($_POST["action"]){ 
        case 'readexisting': 
            $obj->readexisting();
        break;      
    } 
?>

模型.php

<?php
class Model {

   public function readexisting() {
       if (file_exists($_SERVER['DOCUMENT_ROOT']."/Project/events/folder-01/event-01.txt")) {  
            $myFile = ($_SERVER['DOCUMENT_ROOT']."/Project/events/folder-01/event-01.txt");
            $fh = fopen($myFile, 'r');
            $theData = fread($fh, filesize($myFile));
            fclose($fh);

            echo "The file exists. ~:~".$theData ;                      
       } else {
            echo "The file $filename does not exist";
       }
   }

}
?>
于 2013-09-30T08:36:40.530 回答
0

在不重新加载/加载页面的情况下(直接)使用 onclick 调用 PHP 函数是不可能的。

但是您可以使用<a>标签作为替代解决方案并调用该 PHP 函数。

于 2013-09-30T08:37:53.840 回答
0

您不能像 Javascript 函数那样从 HTML 标记调用 PHP 函数。你必须将你的函数更改为 javascript 函数才能像这样调用它

onclick="readexisting()"
于 2013-09-30T08:38:48.760 回答