我有一个简单的表单,用户可以在其中设置一些数值并添加注释。然后通过AJAX调用将其发送到数据库。
所以我有两个输入:一个数字滑块(文本字段)和一个用于评论的文本区域(当然还有提交按钮)。
单击按钮后调用Ajax的JavaScript如下所示:
jQuery("button.ocen").click(function(event){
var dok = jQuery(this).parent().find("input#dok").val(); // this is always integer
var comment = jQuery(this).parent().find("#komentarz").val(); // this is string
var data = {
action: \'ocen\',
dok: dok,
comment: comment
};
var jqxhr = jQuery.post("http://mydomain/wp-admin/admin-ajax.php", data, function(response){
}).done(function(response){
jQuery(".odpowiedz").html(response);
setTimeout(function(){location.reload();}, 1500);
});
event.preventDefault();
});
我成功地使用了这个方法大约7个月。但最近,在wordpress的一个实现之后,它停止了正常工作:如果我只设置了数字值,它将被正确保存到数据库中,但如果我添加了注释,页面将被重新加载,但没有保存到DB中。
有什么问题吗?
编辑:php代码:
function ajax_ocen()
{
extract($_POST);
global $wpdb;
$wpdb->show_errors;
if(!isset($comment))
$comment = "";
$q = "INSERT INTO my_table(date, dok, comment) VALUES(NOW(), $dok, \'$comment\')";
$res = $wpdb->query($q);
if($res)
echo "<div class=\'success\'>Added</div>";
$wpdb->show_errors;
exit();
}
EDIT:
好的,我发现如果注释包含特定语言的特殊字符,则不会保存该注释。如何将这些character转义/转换为正确保存到DB?