我有以下代码,在页面加载时执行,而不是在用户点击链接时执行。我想在用户点击链接时执行php函数。请不要给我任何JS或AJAX解决方案,我只限于PHP和HTML。
echo '< a href="index.php onclick="this.blur();' . somePHPfunction() .';">' . $str . '</a></li>';
答案 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。