浏览器刷新时删除数据库条目,AJAX PHP jQuery

时间:2022-02-14 作者:protagonist

我有一个表单,在通过ajax提交表单时更新数据库表中的列。一切都很好,数据库表列可以获取信息,但一旦刷新浏览器,信息就会从数据库中删除。

如果meta\\u值不存在,但meta\\u值也在提交表单时创建的数据库中,则PHP将执行数据库更新。

我希望信息保留在数据库中,直到或除非meta\\u值被删除或不存在。

任何见解都将不胜感激。

PHP

add_action(\'wp_ajax_hide_this\', \'hide_this_by_id\');
add_action(\'wp_ajax_nopriv_hide_this\', \'hide_this_by_id\');
function hide_this_by_id()
{
    global $wpdb;
    $wpdbPrefix = $wpdb->prefix . \'swpm_members_tbl\';
    $postdVlaue2 = $_POST[\'hidebtn2\'];
    $this_user = $_POST[\'thisuser\'];
    $this_num = $_POST[\'thisnum\'];


    if (is_user_logged_in()) {
        $member_id = SwpmMemberUtils::get_logged_in_members_id();

        $query = "SELECT * FROM " . $wpdb->prefix . "swpm_members_tbl WHERE member_id = %d";
        $userData = $wpdb->get_row($wpdb->prepare($query, $member_id));

        $membership_levels = $userData->membership_level;

        $labelID4 = $membership_levels;

        $insertdisUr = $wpdb->update( $wpdbPrefix, array( \'this_user\' => $this_user), array( \'member_id\' => $member_id));
        $insertdisId = $wpdb->update( $wpdbPrefix, array( \'this_id\' => $this_num), array( \'member_id\' => $member_id));

    } else {
        $not_loggedin = 1;
    }

    if ($labelID4 == 10 ) {
        $userlvlMeta2 = 1;
        $alredyclick3 = get_user_meta($member_id, \'hidden-info\', true);
        if (empty($alredyclick3) &&  $postdVlaue2 == 1) {
            $insertdisUr;
            $insertdisId;
            $alredyclick3 = 1;
        }
    }

    $return4 = array(
        \'hIdethis2\'  => $this_hide2,
        \'userlvlMeta2\' => $userlvlMeta2,
        \'userlvlNolog\' => $not_loggedin,
    );

    echo json_encode($return4);

    die();
}
jQuery

function doAjaxRequest4(hidebtn2,getthisInfo,getthisInfo2) {

    jQuery.ajax({
        url: ajax_sib_front_object.ajax_url,
        data: {
            \'action\': \'hide_this\',
            \'thisuser\': getthisInfo,
            \'thisnum\': getthisInfo2,
            \'hidebtn2\': hidebtn2
        },
        dataType: \'JSON\',
        type: "post",
        success: function (data) {
            console.log(data.test);
            var input = jQuery(\'.thisuser > input\');
            var input2 = jQuery(\'.thisnumber > input\');
            var is_name = input.length > 3;
            var is_name2 = input2.length > 3;

            if (!data.hIdethis2 == 1 && data.userlvlMeta2 == 1) {
                jQuery("#this_col_1").addClass("enable_this");
            } else if (data.hIdedisc2 == 1 && is_name && is_name2 ) {
                jQuery("#this_col_1").removeClass("enable_this");
                jQuery("#this_col_2").addClass("enable_this");

            } 
        }
    });
}
函数调用方

if ($(\'body\').is(\'.page-id-9999\') || $(\'body\').is(\'.page-id-1111\')) {

    var thisbtn = document.querySelector(\'#this_verf_form > div > .wpcf7\');

    thisbtn.addEventListener(\'wpcf7submit\', function (event) {
        var status = event.detail.status;
        console.log(status);
        if (status === \'mail_sent\') {
            jQuery(\'#this_submtID\').val("Submitted");
        }
        setTimeout(function () {
            doAjaxRequest4(1,getthisInfo,getthisInfo2);
        }, 3500);
    }, false);
}

1 个回复
SO网友:protagonist

结果表明,$wpdb->;更新是基于用户通过PHP登录而运行的。将忽略放置在条件语句中的变量。为了解决这个问题,我删除了$wpdb->;更新“用户已登录”条件中的代码部分,并将其移动到“if empty”条件语句中。

相关推荐

尝试在本地复制带有XAMPP-php致命错误的Linux博客

我有一个在linux机器上运行的WP博客。我需要在Windows 10的XAMPP上本地运行它。我在本地将Wordpress博客文件复制到C:\\xampp2\\htdocs\\mtwI,导入了数据库,并根据wp配置分配了权限。然后我在中更改了URLwp_options -&燃气轮机;siteurl 和home 到http://localhost/mtw我在屏幕上看到以下错误:Fatal error: Uncaught ArgumentCountError: array_merge() does not