如何通过AJAX和jQuery更新数据

时间:2020-12-31 作者:vishal

我尝试通过ajax更新数据,但没有成功。我做错了什么?以下是jquery ajax代码

函数中的php代码。php

function update_records(){
  global $wpdb;
  echo $id = $_POST[\'update_record\'];
 
   $db_updated = $wpdb->update( $wpdb->prefix.\'contact_form\', 
        array(\'names\'    => $_POST[\'update_name\'],
              \'emails\'   => $_POST[\'update_email\'],
              \'gender\'   => $_POST[\'update_gender\'],
              \'age\'      => $_POST[\'update_age\']), array( \'ID\' => $id ) );
}
add_action( "wp_ajax_update_records", "update_records" );
add_action( "wp_ajax_nopriv_update_records", "update_records" );

jquery ajax代码

jQuery(\'.upd_btn\').click(function(){
        var id = jQuery(this).attr(\'data-id\');
         var name = jQuery(this).attr(\'data-name\');
         var email = jQuery(this).attr(\'data-email\');
         var gender = jQuery(this).attr(\'data-gender\');
         var age = jQuery(this).attr(\'data-age\');

        alert(age);

        $.ajax({
            url: \'<?php echo admin_url(\'admin-ajax.php\');?>\',
            type: \'POST\',
            data:{ 
            action: \'display_func\', 
              update_record:id,
              // update_name:name,
              // update_email:email,
              // update_gender:gender,
              // update_age:age,
            },
            success: function( data ){
                // alert("Records are successfully update");
                location.reload();
            }
         });
    });
ajax错误屏幕截图-https://prnt.sc/wdon1x

2 个回复
最合适的回答,由SO网友:Had1z 整理而成

首先,在jquery事件处理程序中action 参数的值应为后面的字符串wp_ajax_wp_ajax_nopriv_. 因此,在您的示例中action 应该是update_records. 所以display_func 是错误的
然后在php代码的第3行中echo 应删除关键字
因此您的php代码应该如下所示:

function update_records(){
    global $wpdb;
    $id = $_POST[\'update_record\'];

    $db_updated = $wpdb->update( $wpdb->prefix.\'contact_form\', 
        array(
            \'names\'  => $_POST[\'update_name\'],
            \'emails\' => $_POST[\'update_email\'],
            \'gender\' => $_POST[\'update_gender\'],
            \'age\'    => $_POST[\'update_age\']
        ), 
        array( \'ID\' => $id ) 
    );
}  
add_action( "wp_ajax_update_records", "update_records" );
add_action( "wp_ajax_nopriv_update_records", "update_records" );

SO网友:Baikare Sandeep

请在将数据插入或更新到数据库之前清理数据,以防止攻击者攻击Read Documenation:


function update_records(){
    global $wpdb;
    $id = intval(sanitize_text_field($_POST[\'update_record\']));

    $db_updated = $wpdb->update( $wpdb->prefix.\'contact_form\', 
        array(
            \'names\'  => sanitize_text_field($_POST[\'update_name\']),
            \'emails\' => sanitize_email($_POST[\'update_email\']),
            \'gender\' => sanitize_text_field($_POST[\'update_gender\']),
            \'age\'    => intval(sanitize_text_field($_POST[\'update_age\']))
        ), 
        array( \'ID\' => $id ) 
    );
}  
add_action( "wp_ajax_update_records", "update_records" );
add_action( "wp_ajax_nopriv_update_records", "update_records" );

相关推荐

数据库中未插入AJAX联系人表单小部件插件数据

我已经为此工作了几个星期,但没有成功。我已经解决了代码中的一个又一个问题,但似乎没有一个更正可以解决我的核心问题。表单没有向数据库中插入任何内容,我也不知道为什么。我的所有数据都在ajax调用中传递,但它不会插入数据库中的数据。我是ajax和WordPress插件的新手,所以我可能遗漏了一些明显的东西。请帮我知道我哪里做错了。提前谢谢。我的小部件表单插件代码public function widget( $args, $instance ) { if ( ! isset