gpt4 book ai didi

php - Wordpress 表在 AJAX/PHP 后不会更新(即使有 200 ok 响应)

转载 作者:行者123 更新时间:2023-11-30 00:31:10 25 4
gpt4 key购买 nike

这是我第一次尝试使用 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();
}
?>

最佳答案

仅仅因为你从请求的页面得到 200(OK),并不意味着请求的页面没有错误:) 其次,看起来这将在 Wordpress 中使用......话虽如此,如果没有加载 WordPress,则无法使用 add_action

对于正常 WordPress 安装之外的文件,您需要包含 wp-load.php include "/path/to/wordpress/wp-load.php",例如。然后就可以使用它的功能了。

关于php - Wordpress 表在 AJAX/PHP 后不会更新(即使有 200 ok 响应),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22507154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com