AJAX无法回调

时间:2015-05-16 10:43:32

标签: javascript php jquery ajax html5

我使用ajax将update表格数据添加到数据库,如果成功,它会返回一些文字,但是它无法正常工作

HTML

<div class="container">
        <div class="row">
            <div class="col-md-6 col-md-offset-3">
                <form>
                    <input type="text" name="name" value=""  placeholder="name..." >
                    <br>
                    <input type="text" name="email"  value="" placeholder="email..." >
                    <br>
                    <button id="form-btn" class="btn btn-default" onclick="update()">click me</button>
                </form>
            </div>
        </div>
        <div class="row">
            <div class="col-md-12"><span id="result">here</span></div>
        </div>
    </div>

JS

function update() {

  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
  } else {  // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }

  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState = 4 && xmlhttp.status == 200) {
      // document.getElementById("result").innerHTML = xmlhttp.responseText;
      alert(xmlhttp.responseText);
    }
  }

  xmlhttp.open("POST","ajax_form.php",true);
  xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  var str = $("form").serialize();
  xmlhttp.send(str);
}

PHP

  $name = $_POST["name"];
$email = $_POST["email"];

if ($sql_insert = $conn->prepare("INSERT INTO $tablename (name, email) VALUES (?, ?)")) {
    # Bind the variables to the parameter as strings
    if (!$sql_insert->bind_param("ss", $name, $email)) {
        echo "binding parameter fail";
    }

# Execute the statement
if (!$sql_insert->execute()) {
    echo "insert fail: " . $sql_insert->error .  "<br>";

} else {
    echo "success";
}

# Close the prepared statement
$sql_insert->close();               
}

我期待的结果是:当用户提交表单时,它会通知用户它在<span id='result'></span>中成功更新,但它只是在没有通知的情况下更新数据。

2 个答案:

答案 0 :(得分:1)

由于声誉,我无法对你的帖子发表评论。但是你的代码有错误。你错过了一个等号

if (xmlhttp.readyState = 4 && xmlhttp.status == 200) 

应该是

if(xmlhttp.readyState == 4&amp;&amp; xmlhttp.status == 200)

答案 1 :(得分:0)

这是使用jQuery ajax的方法。 类似的应该使用您的代码。 尝试在回调函数中添加警报。

$.ajax({
        url: ...,
        type: ...,
        data: ...,
        async:false,
        error: function(data){ // callback triggers almost directly after returning

            $("#result").html("Error occurred");
        }, 
        success: function(data){
            $("#result").html("update successful");
        }
    });