为什么我的php html onclick事件在页面加载时执行?

时间:2013-07-23 19:29:56

标签: php html

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

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

4 个答案:

答案 0 :(得分:4)

PHP在服务器上执行。因此,当HTML到达您的时候,该功能已经被执行。

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

此:

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

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

修复此问题的唯一方法是使用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;
    }
';

不可否认,我没有完美地调试该代码,但您可以了解它的功能。

答案 3 :(得分:0)

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

话虽这么说,制作一些事情的方法可以使用html和PHP来完成,但你需要使用表单和POST来完成。

使用按钮制作表格。单击该按钮时,它会将其数据发送到另一个PHP页面,然后加载新内容。

以下是一个例子:

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

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