这是我第一次尝试使用ajax&更新数据库。 WordPress的。我正在尝试将字段设置为“完成”状态。单击链接时。一切似乎都很顺利,我得到了一个好的" 200 ok"来自控制台的响应,jQuery甚至显示了我正在采取的成功行动。然而,php并没有更新数据库。正确的变量正在回显到控制台,所以我知道正确设置了这些变量。我不知道我的MySQL查询是否是我正在尝试的,或者是否有我忽视的东西。任何帮助或建议将不胜感激。
这是我的jQuery:
// Click to Complete Activity Functionality
jQuery(".complete-activity").click( function( e ) {
e.preventDefault();
nonce = jQuery(this).attr("data-nonce")
wp_user_id = jQuery(this).attr("wp_user_id")
activity_post_id = jQuery(this).attr("activity_post_id")
wp_user_id = parseInt(wp_user_id);
activity_post_id = parseInt(activity_post_id);
console.log('My wp user id is: ' + wp_user_id);
console.log('My Activity id is: ' + activity_post_id);
jQuery.ajax({
type : "post",
url : myAjax.ajaxurl,
data : {
action: "gw_complete_activity",
"wp_user_id" : wp_user_id,
"activity_post_id" : activity_post_id,
"nonce" : nonce
},
success: function(response) {
console.log('Your field has been set as completed');
jQuery('li#active-'+ activity_post_id).css('display', 'none');
}
})
}) // End click to complete activity
这是我的PHP代码:
<?php
//Complete Activity in Database (AJAX)
add_action("wp_ajax_gw_complete_activity", "gw_complete_activity");
add_action("wp_ajax_nopriv_gw_complete_activity", "my_must_login_to_complete");
function gw_complete_activity() {
if ( !wp_verify_nonce( $_REQUEST['nonce'], "gw_complete_activity")) {
exit("No naughty business please");
}
$wp_user_id = $_REQUEST['wp_user_id'];
$activity_post_id_complete = $_REQUEST['activity_post_id'];
$date_completed = current_time('mysql', 1);
global $wpdb;
$wpdb->update (
'wp_gwactivities',
array( 'date_completed' => $date_completed, 'activity_status' => 'complete'),
array( 'wp_user_id' => $wp_user_id)
);
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
$result_add = json_encode($result_add);
echo $result_add;
}
else {
header("Location: ".$_SERVER["HTTP_REFERER"]);
}
die();
}
function my_must_login_to_complete() {
echo "You must be logged in to complete your activities.";
die();
}
?>
答案 0 :(得分:0)
只是因为你从请求的页面得到200(OK),并不意味着请求的页面没有错误:)其次,看起来这将在Wordpress中使用...用那说,如果没有加载wordpress,就无法使用add_action
。
对于正常wordpress安装之外的文件,您需要包含wp-load.php include "/path/to/wordpress/wp-load.php"
。然后你可以使用它的功能。
答案 1 :(得分:0)
更新查询后,将下面的代码放入mysql中直接检查查询。
print_r($wpdb->last_query);
如果不起作用,请在此处提供您的查询。