繁体   English   中英

php的AJAX调用不起作用

[英]AJAX call to php not working

我正在研究AJAX编程,但我遇到了一些问题。 在下面的代码中,我认为我的php脚本没有回显成功。 我正在尝试将值插入数据库表。 因此,这些值将插入表中。 我的页面上有一个span元素,默认情况下什么也不显示。 但是,如果PHP脚本回显成功,则必须显示“ AJAX正常工作”。 如果我的PHP脚本未回显“成功”,则必须显示“ AJAX无效”。 但是,尽管已插入值,但显示“ AJAX无效”。 如果我不包括数据库代码,那么我的脚本将回显成功,并且span元素将显示“ AJAX正常工作”。 但是,如果我包含数据库代码,我认为它并没有回显成功,并且span元素显示“ AJAX无效”。 下面是我的代码:

<head>
<meta charset="UTF-8">
<title></title>
<script src="js/main.js"></script>
<script src="js/ajax.js"></script>
<script>
function insert(){
    var elem = _("myTextArea").value;
    var result = _("result");
    result.innerHTML += elem + "<br>";
    elem.value = "";
    var ajax = ajaxObj("POST", "dynamicdiv_parser.php");
    ajax.onreadystatechange = function() {
        if(ajaxReturn(ajax) == true) {
            if(ajax.responseText == "success"){
                _("status").innerHTML == "AJAX worked";
            }
            else{
                _("status").innerHTML == "AJAX didn't work";
            }
        }
    }
    ajax.send("post="+elem+"&type=a");
}
</script>
</head>
<body>
<form name="dynamicdivform" id="dynamicdivform" onsubmit="return false;">
<p id="result"></p>
<textarea name="myTextArea" id="myTextArea" cols="100" rows="14"></textarea><br>
<input type="button" id="postBtn" value="POST" onClick="insert()"> 
<span id="status"></span>
</form>
</body>

我已经包含在我的程序两个JavaScript文件,这是main.jsajax.js 下面是他们的代码。

这是main.js

function _(x){
    return document.getElementById(x);
}

这是ajax.js

function ajaxObj( meth, url ) {
    var x = new XMLHttpRequest();
    x.open( meth, url, true );
    x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    return x;
}
function ajaxReturn(x){
    if(x.readyState == 4 && x.status == 200){
        return true;    
    }
}

这是我的PHP脚本,它回响了成功

  <?php
if(isset($_POST["post"])){
    include_once("php_includes/dbconsampledb.php");
    $data = $_POST['post'];
    $type = $_POST['type'];
    $sql = "INSERT INTO posts(data, type) 
            VALUES('$data','$type')";
    $query = mysqli_query($db_conx, $sql);
    echo "success";
}
?>

在发布此问题之前,我已经尝试过工作,但没有找到任何解决方案。 这对我来说非常重要。 所以,任何人都可以调试它,然后告诉我问题出在哪里...预先感谢!

_("status").innerHTML == "AJAX worked";

应该

_("status").innerHTML = "AJAX worked";

与一个=

我的建议是使用console.log()调试ajax响应。

if(ajaxReturn(ajax) == true) {
            console.log('Response: ', ajax.responseText);
            if(ajax.responseText == "success"){

数据库功能可能存在一些错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM