php - Ajax 无法与 wpdb 一起使用

标签 php mysql ajax wordpress

我有一个在 Ajax、PHP 和 Mysql 中创建的简单代码,该代码在所有条件下都可以正常工作,除了一个,这是 wpdb 将数据插入表的代码

    <script type="text/javascript">
function _(id){ return document.getElementById(id); }
function submitForm(){
    _("status").innerHTML = 'please wait ...';
    var formdata = new FormData();
    formdata.append( "m", _("m").value );
    var ajax = new XMLHttpRequest();
    ajax.open( "POST", "<?php bloginfo('template_directory'); ?>/ajax-insert.php" );
    ajax.onreadystatechange = function() {
        if(ajax.readyState == 4 && ajax.status == 200) {
            if(ajax.responseText == "empty"){
                _("status").innerHTML = '<div class="error"><p>Please Fill all of the Fields</p></div>';
            }
            if(ajax.responseText == "Done"){
                _("status").innerHTML = '<div class="success"><p>Done</p></div>';
            }
            if(ajax.responseText == "error"){
                _("status").innerHTML = '<div class="success"><p>Problem</p></div>';
            }
        }
    }
    ajax.send( formdata );
}
</script>
<form action="" onsubmit="submitForm(); return false;">
        <div id="status"></div>
    <label>Your Message</label><br>
    <textarea cols="50" rows="10" type="text" name="m" id="m"></textarea>
        <br>
    <input name="submit" type="submit" value="Send">
</form>

ajax-insert.php 我编写了代码来插入具有某些条件的数据 这是代码

<?php 
    if(isset($_POST['m'])){
        $message = $_POST['m'];
        date_default_timezone_set("Africa/Cairo");
        $date = date("Y/m/d h:i:sa");
    }if(empty($message))
        echo "empty";
    elseif(!preg_match("~^[0-9a-z\-'\s\p{Arabic}]{1,60}$~iu", $message)){
        echo "error";
    }else{
        echo "Done";
        $insert = $wpdb->insert( 'chat_support', array( 'id' => '1', 'message' => $message , 'date' => $date, 'user' => $user_ID));
    }
?>

如果我尝试在textarea为空时提交表单,它会给我答复,它是空的,但问题是当我写任何东西在数据库中提交时,Else之后的代码不起作用 响应是“请稍候......”,并且此响应还有更多时间,没有“做”和“事”

最佳答案

强烈建议使用 WordPress Ajax 操作,您需要将要调用的函数连接到 wp_ajax,并且它将在整个 wp 环境中可用

关于如何创建和调用ajax函数的详细信息可以从这里查看https://codex.wordpress.org/AJAX_in_Plugins

关于php - Ajax 无法与 wpdb 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51310169/

相关文章:

php - 如何在 PHP 或 MySQL 中对随机文本字符串使用类似 mod 的操作

mysql - 如何选择同一个表中不匹配依赖项的条目

java - 使用 reSTLet 将 json 内容传送到不同的浏览器类型

php - objective-c /php session ?

php - 我可以阻止我的虚拟主机提供商访问我的 "mySQL"数据库中的信息吗?

php - mysql -> fetch_all() 不工作

mysql - Rails 将两个不同的模型实例保存为单个事务

mysql - mysqli_query 中的重音符号而不是 ''

javascript - 使用 PHP/Javascript 中的按钮动态生成 <div> 部分?

ajax - Ajax加载后重新加载Cufon,请帮忙