【发布时间】:2021-01-15 07:22:44
【问题描述】:
我制作了自定义插件并完成了 crud 操作,在管理页面中显示所有数据,使用了 ajax 和 jquery。数据已成功删除,但未插入或更新。数据成功通过ajax但没有插入。如果输入块为空,我也看到了什么,我放了一些数据并更新了它。它得到了第一行数据。
错误-https://prnt.sc/wnzqjr
ajax 插入数据
<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
【问题讨论】:
-
您正在使用
id获取问题和答案,但问题是id应该是唯一的,否则您将始终获得该id的第一个实例。这就是您获得第一行数据的原因。尝试使用输入的类或名称属性来获取与按钮相邻的问题和答案。 -
从数据库获取数据时正确获取数据。我区分了 jquery 中每个按钮的类。 prnt.sc/wo1lyz
-
我不是在谈论数据库。 jQuery('#question').val();这里
#question指的是不唯一的id。