如何使用Ajax(不使用JQuery)在数据库中插入数据?

时间:2019-07-18 14:34:14

标签: javascript php ajax

我正在为我的网站基于php,mysql和ajax创建一个shoutbox。现在,我希望用户能够编写一条消息,使用Ajax打开保存文件,然后使用php将消息插入数据库。 一切正常-除了ajax部分。不知何故它无法打开保存文件。

html:

<input type='text' id='shoutbox-comment' name='shoutbox-msg' style='width: 179px;' value='My message'>  
<input type='submit' name='shoutbox-submit' value='ok' onclick='shoutbox-send();'>

我正在将Medoo框架用于任何数据库请求。我已经使用普通的html表单尝试过该代码,并且文件本身运行正常。

php“ shoutbox-write.php”:

if (!empty($_POST['msg'])){
    $userid = $_SESSION['id'];

    $message = substr($_POST['msg'],0,200);
    $message = xss($message);

    $now = time();
    $database->insert("shoutbox", ["userid" => $userid, "message" => $message, "time" => $now]);
}

现在出现问题了。我尝试了各种方法,甚至将整个脚本更改为GET,以查看其是否有效。什么都没有。第一个JavaScript代码是我从here那里获得的代码。第二个是我以前使用过的。两者都没有工作。请注意,我要解决此问题而不使用JQuery。

function shoutbox-send() {
    var xmlHttp = new XMLHttpRequest();
    var url="<?php echo PATH; ?>divers/shoutbox-write.php";
    var message = document.getElementById('shoutbox-comment').value;
    var parameters = "msg="+message;
    xmlHttp.open("POST", url, true);

    //Black magic paragraph
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Content-length", parameters.length);
    xmlHttp.setRequestHeader("Connection", "close");

    xmlHttp.onreadystatechange = function() {
        if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
        document.getElementById('shoutbox-comment').value="";
        }
    }
    xmlHttp.send(parameters);
}
function shoutbox-send() {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            var message = document.getElementById('shoutbox-comment').value;
            document.getElementById('shoutbox-comment').value = "";
        }
    };
    xhttp.open("POST", "<?php echo PATH; ?>divers/shoutbox-write.php", true);
    xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhttp.send("msg=" + message + "");
}

感谢您的帮助。

编辑:已解决!函数名称不得包含连字符。现在正在工作

0 个答案:

没有答案