AJAX调用在实现后中断

时间:2015-05-13 作者:Gacek

我有一个简单的表单,用户可以在其中设置一些数值并添加注释。然后通过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?

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

好的,我发现我的DB编码是LATIN2 和wordpress强制UTF-8 在更新后的所有调用中。

当我将数据库的编码更改为UTF-8 一切都开始起作用了。我还使用了:

$comment = mb_convert_encoding($comment, "UTF-8");
只是为了成为舒尔。

结束

相关推荐

单击事件以在AJAX未触发后揭开某些内容

我在wordpress中工作,我的ajax函数结果显示了一个按钮,下面提到了它的html。现在,我想在该按钮上运行一个click事件,但当我单击它时,什么都不会发生。下面是我正在使用的按钮的html和jquery代码,请注意,此按钮显示为ajax操作的结果。其次,我试图取消隐藏的div也是ajax调用的结果,该调用也是动态的,我不知道jquery display:block是否可以处理它。请在此建议。。。谢谢html<input style=\"background-color:purple\" i