我添加了一个ajax按钮,将一些数据发送到wordpress数据库中的自定义表。
这是我的东西。
jQuery(document).ready(function(){
jQuery("#holiday-submit").click(function(event){
event.preventDefault();
//var name = jQuery("#dname").val();
var date = jQuery("#holiday").val();
var reason =jQuery("#holiday-reason").val();
jQuery.ajax({
type: 'POST',
url: MyAjax.ajaxurl,
data: {"action": "add_holiday", "holiday":date, "reason" :reason},
success:function(data){
jQuery("#holiday-status").addClass("success");
jQuery("#holiday-status").html( "New Holiday added " + date +" " + reason);
}
});
});
});
在函数文件中,我有以下内容
function add_holiday(){
$holiday = $_POST['holiday'];
$reason = $_POST['reason'];
global $wpdb;
$table1= $wpdb->prefix.'holidays';
$results = $wpdb->get_results("select * from $table1 where holiday=$holiday");
if($wpdb->num_rows == 0 ){
$wpdb->insert(
$table1,
array(
'holiday' => $holiday,
'reason' => $reason
),
array(
'%s'
)
);
die();
return true;
}
else{
die();
return false;
}
}
add_action('wp_ajax_add_holiday', 'add_holiday');
add_action('wp_ajax_nopriv_add_holiday', 'add_holiday');
ajax调用和相关的回调函数都工作得很好,一旦使用下面的表单提交了数据,它就会发送到数据库并保存。
但是,我不想在数据库中添加重复的日期。
这就是为什么我添加了一个条件来检查数据库表中是否已经存在日期。理想情况下,如果日期已经添加到数据库中,我需要显示一个错误。不过,ajax调用运行时没有考虑上述条件。
解决这个问题的最佳方法是什么。
这是我的窗体和输出区域。
<form action="" method="post">
<input type="date" id="holiday" name="holiday">
<input type="text" id="holiday-reason" placeholder="Holiday reason">
<!--<input type="submit" id="holiday-submit">-->
<input type="button" id="holiday-submit" value="submit" class="btn btn-primary">
</form>
<div id="holiday-status">
</div>
<div id="current-holidays">
<table id="declared-holidays" class="table table-success">
<thead>
<tr>
<th>Date</th>
<th>Reason</th>
</tr>
</thead>
<tbody>
<?php
$table = $wpdb->prefix.'hr_holidays';
$result = $wpdb->get_results("select * from $table");
foreach ($result as $holiday_item){?>
<tr>
<td><?php echo $holiday_item->holiday ;?></td>
<td><?php echo $holiday_item->reason ;?></td>
</tr>
<?php
}
?>
</tbody>
</table>
2条答案
按热度按时间ncecgwcz1#
要调试sql查询,请使用浏览器开发人员控制台中的network选项卡,并按xhr进行过滤,如上图所示
要处理sql注入漏洞,请使用prepared语句
还要注意xss漏洞,千万不要相信用户输入!
6fe3ivhb2#
如果我正确理解了您的问题,那么您似乎没有向ajax success函数中的data参数返回任何内容。
尝试回显函数文件中的内容:
而不是在success函数中使用条件语句: