use*_*310 7 php mysql wordpress jquery
我有一个问题,我已经坚持了几天......我正在尝试使用一个简单的ajaxPOST函数将数据发送到MySQL数据库(而不是WP数据库).
此代码位于主题中的"single-post.php"内,因为必须在每个帖子之前检查它.
$.ajax({ url: 'library/functions/admin_checkuser.php',
data: {action: userID},
type: 'post',
success: function(output) {
alert(output);
}
});
Run Code Online (Sandbox Code Playgroud)
我只是将一个变量发送到"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();
}
Run Code Online (Sandbox Code Playgroud)
但我不认为这些调用是通过脚本进行的.这些脚本在WordPress之外进行测试并且确实有效,所以它必须是WordPress中阻止ajax调用的东西.顺便说一句,我尝试将"admin_checkuser.php"放在许多不同的文件夹中但没有任何效果.
提前致谢.
Sto*_*osh 26
使用内置的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();
}
}
Run Code Online (Sandbox Code Playgroud)
之后,添加钩子连接到内置的AJAX系统
add_action('wp_ajax_check_user', 'checkUser');
add_action('wp_ajax_nopriv_check_user', 'checkUser');
Run Code Online (Sandbox Code Playgroud)
wp_ajax_nopriv_%s 允许从前端调用它.
然后,在您的javascript文件中,您只需触发您的ajax请求.
$.post(ajaxurl, { action: 'check_user', user: userId }, function(output) {
alert(output);
});
Run Code Online (Sandbox Code Playgroud)
如果ajaxurl未定义,则需要在模板文件中创建它,这样的东西应该可以工作,但还有其他方法.
add_action('wp_head','ajaxurl');
function ajaxurl() {
?>
<script type="text/javascript">
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
</script>
<?php
}
Run Code Online (Sandbox Code Playgroud)
wordpress的后端完成其余的工作.
它接受在AJAX请求中传递的动作,查找相应的`wp_ajax(_nopriv)_%s钩子,然后调用分配给钩子的函数.
它也将传入$_POST或$_GET取决于AJAX请求的类型.
您可以阅读有关在Wordpress中使用AJAX的更多信息.
您应该检查 ajax 调用的 url。
也许使用完整的 url 而不是相对的 url。
这可能是因为您的主题位置导致 url 不正确。我假设您的 ajax 代码位于您的主题文件夹中。
有一些 WordPress 函数可以获取主题目录。
例如,如果您在这个页面http://yourwebpage/test/,那么 ajax 调用将转到此处http://yourwebpage/test/library/functions/admin_checkuser.php。我认为这是不正确的位置。
这就是为什么您需要将绝对 url 添加到脚本中。如果它在你的主题中,你可以使用这个方法get_template_directory_uri()来获取模板目录。
请参阅此处: http: //codex.wordpress.org/Function_Reference/get_template_directory_uri
| 归档时间: |
|
| 查看次数: |
19650 次 |
| 最近记录: |