AJAX调用php无法正常工作

时间:2014-02-19 16:56:43

标签: javascript php ajax

我正在研究AJAX编程,我遇到了一些问题。在下面的代码中,我认为我的PHP脚本没有回应成功。我试图将值插入到我的数据库表中。因此,值将被插入表中。我的页面上有一个span元素,默认情况下不显示任何内容。但是如果php脚本回应成功,它必须显示" AJAX工作"。如果我的PHP脚本没有回显"成功",它必须显示" AJAX没有工作"。但它表明" AJAX没有工作"虽然值已插入。如果我没有包含数据库代码,那么我的脚本将回显成功并且span元素显示" AJAX工作"。但是,如果我包含数据库代码,我认为它并没有回应成功,并且跨度元素正在显示" 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";
}
?>

在发布这个问题之前,我已经尝试了这些工作,但我没有找到任何解决方案。这对我来说非常重要。所以请任何人调试它并告诉我问题是什么...提前谢谢!!

2 个答案:

答案 0 :(得分:2)

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

应该是

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

只有一个=

答案 1 :(得分:1)

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

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

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