我有以下功能.我想在用户点击超链接(取消激活我的帐户)时调用此功能.在href点击上调用函数的最佳方法是什么?谢谢
function deleteUserMeta($userID) {
delete_usermeta($userID, 'subscription_id');
delete_usermeta($userID, 'ref_id');
delete_usermeta($userID, 'users_name');
delete_usermeta($userID, 'trans_key');
}
Run Code Online (Sandbox Code Playgroud)
amp*_*343 10
正如Thorben所提到的,你不能在浏览器事件上执行PHP函数,因为语言是服务器端而不是客户端.但是,有几种方法可以解决这个问题:
你不能在浏览器事件上调用PHP函数(例如链接点击),但你可以在点击超链接时加载的页面上调用它 - 让我们称之为'next.php'.为此,请deleteUserMeta()在'next.php'的最顶部有条件地调用您的函数.问题是您需要将一些变量传递给此页面,以便您可以检查条件并执行该功能.使用GET通过超链接传递变量,如下所示:
<a href="next.php?unsubscribe=true&userID=343">Unsubscribe</a>
Run Code Online (Sandbox Code Playgroud)
您希望如何传递userId取决于您.在上面的示例中,它是硬编码的,但您也可能以某种方式使用PHP设置它,如下所示:
<a href="next.php?unsubscribe=true&userID=<?php echo $userID;?>">Unsubscribe</a>
Run Code Online (Sandbox Code Playgroud)
现在在'next.php'上,使用条件来评估该变量:
<?php
if($_REQUEST['unsubscribe'] == 'true'){
deleteUserMeta($_REQUEST['userID']);
}
?>
Run Code Online (Sandbox Code Playgroud)
执行此操作的另一种方法是使用某些AJAX在客户端执行此操作.如果您不熟悉Javascript/jQuery/AJAX,我可能会坚持使用其他解决方案,因为它可能更容易实现.如果你已经使用了jQuery,这应该不会太难.使用jQuery,您可以将此函数绑定到超链接的实际单击事件.这样,整个操作可以在不刷新页面的情况下发生:
<a href="#" onclick="ajaxDeleteUserMeta()">Unsubscribe/a>
Run Code Online (Sandbox Code Playgroud)
现在你需要两件事:1.第一个解决方案所需的同一个PHP文件"next.php"只包含对你的函数的调用,deleteUserMeta($userId)
2.调用一个javascript函数ajaxDeleteUserMeta(),所以在你的JS中创建一个如下: (因为这是一个命名函数,它不需要jQuery(document).ready(function(){});像大多数匿名jQuery函数那样进入内部.)
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." );
}
});
}
Run Code Online (Sandbox Code Playgroud)
啰嗦,但我希望其中一些有点意义.
| 归档时间: |
|
| 查看次数: |
14408 次 |
| 最近记录: |