数据无法通过管理页面中的Ajax和jQuery插入和更新? [英] Data not insert and update through ajax and jQuery in admin page?

查看:80
本文介绍了数据无法通过管理页面中的Ajax和jQuery插入和更新?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我制作了自定义插件并完成了crud操作,在管理页面中显示了所有数据,使用了ajax和jquery.数据已成功删除,但未插入或更新.数据成功通过ajax,但未插入.另外,如果输入块为空,我会看到一些数据,并对其进行了更新.它获得了第一行数据.
错误- https://prnt.sc/wnzqjr
用于插入数据的ajax

I made custom plugin and done crud operation, display all data in admin page, used ajax and jquery. Data successfully deleted but not inserted or updated. Data successfully pass through ajax but not inserted. Also What I saw if input block is empty and I put some data and updated it. It got first row data.
Error- https://prnt.sc/wnzqjr
ajax for insert data

<tr>
                     <td><?php echo $q ?></td>

                     <td>
                        <input type="text" name="question" class="question"  value="<?php echo $print->question ?>" ></td>
                     <td>
                     <input type="text" name="answer" class="answer"  value="<?php echo $print->answer ?>" > </td>

                     <td>
                        <input type="button" value="Insert" id="insert" data-id = "<?php echo $print->id ?>" name="insert" class="ins_btn">
                    </td>

                    <td>
                        <input type="button" value="Update" id="update" data-id = "<?php echo $print->id ?>" name="update" class="upd_btn">
                    </td>

                     <td>
                        <input type="button" value="Delete" id="delete" data-id = "<?php echo $print->id ?>" name="delete" class="del_btn">
                    </td>
                </tr>

jQuery('.ins_btn').click(function(){
        var id = jQuery(this).attr('data-id');
        var question = jQuery('#question').val();
        var answer = jQuery('#answer').val();
        // alert(id);
        $.ajax({
            url: '<?php echo admin_url('admin-ajax.php');?>', 
            type: 'POST',
            data:{ 
              action: 'insert_records', 
              insert_record : id,
              insert_question: question,
              insert_answer: answer
            },
            success: function( data ){
                alert("Records are successfully insert");
                location.reload();
            }
         });
    });

插入查询

 function insert_records(){
  global $wpdb;
 $id = $_POST['insert_record'];
 $question = $_POST['insert_question'];
 $answer = $_POST['insert_answer'];


  $db_inserted = $wpdb->insert( $wpdb->prefix.'faqq', 
        array( 'ID' => $id, 
               'question' => $question, 
               'answer' => $answer) 
    );
}
add_action( "wp_ajax_insert_records", "insert_records" );
add_action( "wp_ajax_nopriv_insert_records", "insert_records" );

用ajax更新数据

jQuery('.upd_btn').click(function(){
        var id = jQuery(this).attr('data-id');
        var question = jQuery('#question').val();
        var answer = jQuery('#answer').val();
        alert(question);
        $.ajax({
            url: '<?php echo admin_url('admin-ajax.php');?>', 
            type: 'POST',
            data:{ 
              action: 'update_records', 
              update_record : id,
              update_question : question,
              update_answer : answer

            },
            success: function( data ){
                alert("Records are successfully updated");
                location.reload();
            }
         });
    });

更新查询

function update_records(){
  global $wpdb;
  // $table_name = $wpdb->prefix.'faqq';
  $id = $_POST['update_record'];
  $question = $_POST['update_question'];
  $answer = $_POST['update_answer'];
  $db_updated = $wpdb->update( $wpdb->prefix.'faqq', 
        array('question'    => $question,
              'answer'   => $answer, array( 'ID' => $id ) )
          ); 
}

这是一些错误.1)通过ajax更新数据时出错- https://prnt.sc/wnymkx https://prnt.sc/wnyos5 https://prnt.sc/wnyuhk

Here are some errors. 1)Getting error when update the data through ajax- https://prnt.sc/wnymkx, https://prnt.sc/wnyos5, https://prnt.sc/wnyuhk

推荐答案

不需要id字段来插入数据,因此我将其删除.我将类用于问答字段.

Don't need id field for inserting data, So I remove it. I use classes for question and answer fields.

jQuery('.ins_btn').click(function(){
        var question = jQuery(this).closest('tr').find('.question').val();
        var answer = jQuery(this).closest('tr').find('.answer').val();
        // alert(question);
        $.ajax({
            url: '<?php echo admin_url('admin-ajax.php');?>',  
            type: 'POST',
            data:{ 
              action          : 'insert_records', 
              insert_question : question,
              insert_answer   : answer
            },
            success: function( data ){
                location.reload();
            }
         });
    });

与更新功能相同,仅添加参考ID字段.因为对于更新数据,引用ID很重要.

Same as for update function, only add reference id field. Because for updating the data, reference Id is important.

jQuery('.upd_btn').click(function(){
        var id = jQuery(this).attr('data-id');
        var question = jQuery(this).closest('tr').find('.question').val();
        var answer = jQuery(this).closest('tr').find('.answer').val();
        
        $.ajax({
            url: '<?php echo admin_url('admin-ajax.php');?>', 
            type: 'POST',
            data:{ 
              action: 'update_records', 
              update_record : id,
              update_question : question,
              update_answer : answer

            },
            success: function( data ){
                location.reload();
            }
         });
    });

在更新查询中,我在错误的位置添加了括号.

And in update query, I added parenthesis at wrong position.

function update_records(){
  global $wpdb;
   // echo "<pre>"; print_r($_POST);
   // die();    
  // $table_name = $wpdb->prefix.'faqq';
  $id = $_POST['update_record'];
  $question = $_POST['update_question'];
  $answer = $_POST['update_answer'];

  $db_updated = $wpdb->update( $wpdb->prefix.'faqq', 
        array('question'    => $question,
              'answer'   => $answer
          ),
               array( 'ID' => $id ) 
          );

  // $wpdb->query($wpdb->prepare("UPDATE $table_name SET question = '$question', answer = '$answer' WHERE id = $id"));
}
add_action( "wp_ajax_update_records", "update_records" );   //update_records is action
add_action( "wp_ajax_nopriv_update_records", "update_records" );

这篇关于数据无法通过管理页面中的Ajax和jQuery插入和更新?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆