我有以下功能。我想在用户点击超链接(取消激活我的帐户)时调用此功能。在href点击上调用函数的最佳方法是什么?感谢
function deleteUserMeta($userID) {
delete_usermeta($userID, 'subscription_id');
delete_usermeta($userID, 'ref_id');
delete_usermeta($userID, 'users_name');
delete_usermeta($userID, 'trans_key');
}
答案 0 :(得分:10)
正如Thorben所提到的,你不能在浏览器事件上执行PHP函数,因为语言是服务器端而不是客户端。但是,有几种方法可以解决这个问题:
你不能在浏览器事件上调用PHP函数(例如链接点击),但你可以在你点击超链接时加载的页面上首先调用它 - 我们称之为'next.php'。为此,请在“next.php”的最顶部有条件地调用您的函数deleteUserMeta()
。问题是您需要将一些变量传递给此页面,以便您可以检查条件并执行该功能。使用GET通过超链接传递变量,如下所示:
<a href="next.php?unsubscribe=true&userID=343">Unsubscribe</a>
您希望如何传递userId取决于您。在上面的示例中,它是硬编码的,但您也可能以某种方式使用PHP设置它:
<a href="next.php?unsubscribe=true&userID=<?php echo $userID;?>">Unsubscribe</a>
现在在'next.php'上,使用条件来评估该变量:
<?php
if($_REQUEST['unsubscribe'] == 'true'){
deleteUserMeta($_REQUEST['userID']);
}
?>
执行此操作的另一种方法是使用某些AJAX在客户端执行此操作。如果您不熟悉Javascript / jQuery / AJAX,我可能会坚持使用其他解决方案,因为它可能更容易实现。如果你已经使用了jQuery,这应该不会太难。使用jQuery,您可以将此函数绑定到超链接的实际单击事件。这样,整个操作就可以在不刷新页面的情况下发生:
<a href="#" onclick="ajaxDeleteUserMeta()">Unsubscribe/a>
现在你需要两件事:
1.第一个解决方案所需的相同PHP文件“next.php”只包含对您的函数deleteUserMeta($userId)
的调用
2.一个名为ajaxDeleteUserMeta()
的javascript函数,所以在你的JS中创建一个如下:(因为这是一个命名函数,它不需要像大多数匿名jQuery函数一样进入jQuery(document).ready(function(){});
。)
function ajaxDeleteUserMeta(){
var userID = ''; // fill this in to somehow acquire the userID client-side...
jQuery.ajax({
type: "POST",
url: "next.php", /* this will make an ajax request to next.php, which contains the call to your original delete function. Essentially, this ajax call will hit your original server-side function from the client-side.*/
data: "userID="+userID+"&unsubscribe=true", /*here you can pass a POST variable to next.php that will be interpreted by the conditional function.*/
success: function(msg){
alert( "Data Saved: User ID " + userID + " deleted." );
}
});
}
啰嗦,但我希望其中一些有点意义。
答案 1 :(得分:1)
你可以使用ajax来发布一个只调用该方法的URL。
使用jQuery的示例:
onclick="$.post('http://yourdomain/delete_user?userid',callBackFunction());"
然后在你的php中将该url映射到你的php函数。我从来没有使用PHP或wordpress,所以我不知道你是怎么做的,但它应该是直截了当的,因为它是一个常见的案例。
答案 2 :(得分:1)
这是PHP代码吗?您无法直接从浏览器调用PHP函数。 您可以尝试在您的请求中附加GET或POST变量,在PHP中读取它,然后最终执行上述函数。