我有以下代码,它在页面加载时执行,而不是在用户单击链接时执行。我希望在用户单击链接时执行 php 函数。请不要给我任何 JS 或 AJAX 解决方案,我只限于 PHP 和 HTML。
echo '< a href="index.php onclick="this.blur();' . somePHPfunction() .';">' . $str . '</a></li>';
那么PHP是在服务器上执行的。因此,当 HTML 到达您的手中时,该函数已经被执行。
我知道你不想使用 JS 或 Ajax,但你必须使用它。
您需要了解服务器端语言 (PHP) 和客户端 (JS) 之间的区别。当你运行一个 PHP 函数时,它会在代码生成时执行——在这种情况下,当 html 被发送到浏览器时。当浏览器中发生事件时执行 JS 函数。
要修复您的代码,请somePHPfunction()
在 JS 中重新创建,或者编写一些 AJAX 来回调服务器。
这个:
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;
}
';
诚然,我还没有完美地调试过该代码,但您知道它的作用。
如果您希望 php 在浏览器中执行某些操作而不刷新页面或更改页面,那么您就不走运了。PHP 是一种服务器端脚本语言。这意味着它只能在服务器上运行(例如网络服务器本身)。它不能在用户的浏览器中运行。
话虽这么说,使某事发生的方式可以仅使用 html 和 PHP 来完成,但您需要使用表单和 POST 来完成。
用一个按钮制作一个表格。当按钮被点击时,它会将它的数据发布到另一个 PHP 页面,然后加载新的东西。
这是一个例子:
http://www.w3schools.com/html/tryit.asp?filename=tryhtml_form_submit
但是,如果您希望在 PHP 中发生某些事情,然后用户的浏览器不刷新或移动到另一个页面,那么您将不得不使用 AJAX 和 Javascript。用于操作已从服务器加载的页面的 Javascript 和使用 javascript 从服务器检索数据的 AJAX。