我已经得到了我现在被困在几天的一个问题...我试图用一个简单的ajaxPOST功能将数据发送到一个MySQL数据库(未WP数据库)。
此代码位于主题为“单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”在许多不同势文件夹,但没有奏效。
提前致谢。
您应该检查你的网址为您的Ajax调用。
也许使用完整的网址,而不是一个相对的。
这可能是因为你的主题的位置,使URL不正确。 我假设你的Ajax代码在你的主题文件夹中。
有迹象表明,获得主题目录中的一些WordPress的功能。
例如,如果你在这个网页http://yourwebpage/test/
然后Ajax调用会去这里http://yourwebpage/test/library/functions/admin_checkuser.php
。 这一点我认为是不正确的位置。
这就是为什么你需要绝对的网址添加到您的脚本。 而如果是在你的主题,你可以使用此方法get_template_directory_uri()
来获得模板目录。
在这里看到: http://codex.wordpress.org/Function_Reference/get_template_directory_uri
你的时候使用内置的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系统添加你的钩子
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
钩,然后调用分配给钩子函数。
它也将通过无论是在$_POST
或$_GET
根据AJAX请求的类型。
你可以阅读一些关于使用AJAX WordPress里 。