阿贾克斯不回答我的真实情况

时间:2017-05-09 07:18:16

标签: javascript php jquery ajax

这是html div:

<div class="alert alert-success alert-dismissable feedstatus hidden">
                          <button type="button" class="close" data-dismiss="alert">&times;</button>
                          <span class="glyphicon glyphicon-ok-sign" style="color:#0c0; font-size:40px;"> </span></a><br/>Message recieved.<br/>Thanks <strong class="feedbacker"></strong> 
                        </div>
                        <form role="form" onsubmit="regFeedback()">
                            <div class="form-group">
                                <input class="form-control bordering" id="feedbacker" type="text" name="name" placeholder="Name" style="border:none; border:0px solid #fff;" required/><br>
                                <input class="form-control bordering" id="feedbackemail" type="email" name="email" placeholder="tu@email.com" style="border:none; border:0px solid #fff;"  required/><br>
                                <textarea class="form-control bordering" id="feedback" name="feedback" placeholder="Write me something before go" style="border:none; border:0px solid #fff;"  required/></textarea><br>
                                <button type="submit" class="btn btn-block">Send</button>
                            </div>
                        </form>
                    </div>

另一方面,javascript:

function regFeedback() {
var name=document.getElementById('feedbacker').value;
var mail=document.getElementById('feedbackemail').value;
var feed=document.getElementById('feedback').value;
var xmlhttp;
if (window.XMLHttpRequest) {
    xmlhttp=new XMLHttpRequest();
 } else {
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
   xmlhttp.onreadystatechange=function() {
    if (this.readyState==4 && this.status==200) {
        $(document).ready(function() {
           $("form").remove();
           $(".feedstatus").removeClass("hidden");
           $(".feedbacker").text(name);
           alert("Mensaje recibido. Gracias");
       });
   }
   };
    xmlhttp.open("GET","https://page.php?name="+name+"&email="+mail+"&feedback="+feed,true);
   xmlhttp.send();
   }

数据到达数据库,但回调事件验证:&#34; if(this.readyState == 4&amp;&amp; this.status == 200){&#34;看起来不行。我是新手,但我做得很好。但从编辑到另一个时刻,出现了一些问题:/

3 个答案:

答案 0 :(得分:0)

未经测试,但我认为不是

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

将是

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

this是javascript&amp;中的关键字它指的是一个物体;也就是说,上下文中的主题,或执行代码的主题

同样令人惊讶,所以看到document.ready函数在ajax成功函数

答案 1 :(得分:0)

使用此:

<div class="alert alert-success alert-dismissable feedstatus hidden">
      <button type="button" class="close" data-dismiss="alert">&times;</button>
      <span class="glyphicon glyphicon-ok-sign" style="color:#0c0; font-size:40px;"> </span></a><br/>Message recieved.<br/>Thanks <strong class="feedbacker"></strong> 
    </div>
    <form role="form">
        <div class="form-group">
            <input class="form-control bordering" id="feedbacker" type="text" name="name" placeholder="Name" style="border:none; border:0px solid #fff;" required/><br>
            <input class="form-control bordering" id="feedbackemail" type="email" name="email" placeholder="tu@email.com" style="border:none; border:0px solid #fff;"  required/><br>
            <textarea class="form-control bordering" id="feedback" name="feedback" placeholder="Write me something before go" style="border:none; border:0px solid #fff;"  required/></textarea><br>
            <button type="button" onclick="regFeedback()" class="btn btn-block">Send</button>
        </div>
    </form>
</div>

答案 2 :(得分:0)

您必须在检查状态更改时使用 xmlhttp 对象而不是此。

xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {       
       $("form").remove();
       $(".feedstatus").removeClass("hidden");
       $(".feedbacker").text(name);
       alert("Mensaje recibido. Gracias");       
}
};

此外,您无需对 $(document).ready()功能执行操作,您可以直接在成功阻止中执行操作。