-4

我有以下代码,它在页面加载时执行,而不是在用户单击链接时执行。我希望在用户单击链接时执行 php 函数。请不要给我任何 JS 或 AJAX 解决方案,我只限于 PHP 和 HTML。

echo '< a href="index.php onclick="this.blur();' . somePHPfunction() .';">' . $str . '</a></li>';
4

4 回答 4

4

那么PHP是在服务器上执行的。因此,当 HTML 到达您的手中时,该函数已经被执行。

我知道你不想使用 JS 或 Ajax,但你必须使用它。

于 2013-07-23T19:32:25.217 回答
2

您需要了解服务器端语言 (PHP) 和客户端 (JS) 之间的区别。当你运行一个 PHP 函数时,它会在代码生成时执行——在这种情况下,当 html 被发送到浏览器时。当浏览器中发生事件时执行 JS 函数。

要修复您的代码,请somePHPfunction()在 JS 中重新创建,或者编写一些 AJAX 来回调服务器。

于 2013-07-23T19:33:20.370 回答
1

这个:

echo '< a href="index.php onclick="this.blur();' . somePHPfunction() .';">' . $str . '</a></li>';

是服务器端代码。它somePHPfunction()甚至在 HTML 发送到客户端之前执行。

解决此问题的唯一方法是使用 AJAX 和(我喜欢使用)jQuery 在单击时调用该函数。

echo '<a href="index.php" onclick="this.blur(); phpRequestFunction();">' . $str . '</a>';
echo '<div id="whatYouWantThePhpFunctionToChange"></div>';
echo '<script type="text/javascript">
    function phpRequestFunction() {

        $.post("phpFunction.php", function(data) {
            $("#whatYouWantThePhpFunctionToChange").append(data);
        });
        return false;
    }
';

诚然,我还没有完美地调试过该代码,但您知道它的作用。

于 2013-07-23T19:42:38.373 回答
0

如果您希望 php 在浏览器中执行某些操作而不刷新页面或更改页面,那么您就不走运了。PHP 是一种服务器端脚本语言。这意味着它只能在服务器上运行(例如网络服务器本身)。它不能在用户的浏览器中运行。

话虽这么说,使某事发生的方式可以仅使用 html 和 PHP 来完成,但您需要使用表单和 POST 来完成。

用一个按钮制作一个表格。当按钮被点击时,它会将它的数据发布到另一个 PHP 页面,然后加载新的东西。

这是一个例子:

http://www.w3schools.com/html/tryit.asp?filename=tryhtml_form_submit

但是,如果您希望在 PHP 中发生某些事情,然后用户的浏览器不刷新或移动到另一个页面,那么您将不得不使用 AJAX 和 Javascript。用于操作已从服务器加载的页面的 Javascript 和使用 javascript 从服务器检索数据的 AJAX。

于 2013-07-23T19:36:57.457 回答