我有一个问题困扰了好几天... 我正在尝试使用一个简单的 ajaxPOST 函数将数据发送到 MySQL 数据库(而不是 WP 数据库)。
此代码位于主题中的“single-post.php”中,因为必须在每个帖子之前检查它。
$.ajax({ url: 'library/functions/admin_checkuser.php',
data: {action: userID},
type: 'post',
success: function(output) {
alert(output);
}
});
我只是将一个变量发送到“admin_checkuser.php”脚本,该脚本又会调用另一个对数据库执行操作的脚本。
这是“admin_checkuser”的代码:
$userid = $_POST['action'];
echo $userid;//for testing
$oMySQL = new MySQL();
$query = "Select * FROM videotable WHERE uid = '$userid'";
$oMySQL->ExecuteSQL($query);
$bb = $oMySQL->iRecords;
$aa = $oMySQL->aResult;
echo $bb;
if ($bb == 0){
$query = "INSERT INTO videotable VALUES ('','$userid','true')";
$oMySQL->ExecuteSQL($query);
echo 'true';
exit();
}else{
$sharing = mysql_result($aa,0,"share");
echo $sharing;
exit();
}
但我不认为调用会通过脚本。 这些脚本在 WordPress 之外进行了测试并且确实有效,因此一定是 WordPress 中的某些东西阻止了 ajax 调用。 顺便说一句,我尝试将“admin_checkuser.php”放在许多不同的文件夹中,但没有任何效果。
提前致谢。
最佳答案
最好使用内置的 Wordpress AJAX 请求。
所以在你的主题functions.php
文件中,添加你要调用的函数,例如:
function checkUser() {
$userid = $_POST['user']; //validation also :)
$oMySQL = new MySQL();
$query = "Select * FROM videotable WHERE uid = '$userid'";
$oMySQL->ExecuteSQL($query);
$bb = $oMySQL->iRecords;
$aa = $oMySQL->aResult;
echo $bb;
if ($bb == 0){
$query = "INSERT INTO videotable VALUES ('','$userid','true')";
$oMySQL->ExecuteSQL($query);
echo 'true';
exit();
} else {
$sharing = mysql_result($aa,0,"share");
echo $sharing;
exit();
}
}
之后,您添加连接到内置 AJAX 系统的钩子(Hook)
add_action('wp_ajax_check_user', 'checkUser');
add_action('wp_ajax_nopriv_check_user', 'checkUser');
wp_ajax_nopriv_%s
允许从前端调用它。
然后,在您的 javascript 文件中,您只需触发您的 ajax 请求。
$.post(ajaxurl, { action: 'check_user', user: userId }, function(output) {
alert(output);
});
如果 ajaxurl
未定义,您将需要在模板文件中创建它,类似这样的方法应该可行,但还有其他方法。
add_action('wp_head','ajaxurl');
function ajaxurl() {
?>
<script type="text/javascript">
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
</script>
<?php
}
剩下的由 wordpress 后端完成。
它获取 AJAX 请求中传递的操作,查找相应的 `wp_ajax(_nopriv)_%s
Hook ,然后调用分配给该 Hook 的函数。
它还会根据 AJAX 请求的类型传入 $_POST
或 $_GET
。
您可以阅读更多有关使用 AJAX inside of Wordpress 的信息.
关于php - 如何将ajax添加到wordpress主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10589018/