2013-12-19 240 views
0

我一直在尝试学习ajax,并且从中可以看到我的代码是正确的,但是当它回显返回的json字符串时,它总是刷新页面。任何帮助将不胜感激!Ajax不加载异步。提交表单时刷新页面

<script>  
    // Get XML HTTP Type 
    function get_XmlHttp() { 
     var xmlHttp = null; 
      if(window.XMLHttpRequest) { 
       xmlHttp = new XMLHttpRequest(); 
      }else if(window.ActiveXObject) { 
       xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
     return xmlHttp; 
    } 

    function ajaxSuccess() { 
     alert(this.responseText); 
    } 

    function ajaxrequest(oFormElement) { 
     //Get The Correct XMLHTTP Object 
     var request = new XMLHttpRequest();    

     request.open(oFormElement.method, oFormElement.action, true); 
     request.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
     request.send(new FormData(oFormElement)); 
     return false; 
     request.onreadystatechange = function() { 
      if (request.readyState == 4 && request.status == 200) { 
       alert("done"); 
       document.getElementById('comment_form').innerHTML = request.responseText; 
      } 
     }  
    } 
    </script> 


<form action="<?php echo $add_comment; ?>" method="post" enctype="multipart/form-data" id="comment_form" onsubmit="ajaxrequest(this);"> 
    <input name="user_id" type="hidden" value="<?php echo $user_id; ?>"> 
    <input name="user_message_id" type="hidden" value="<?php echo $user_message_id; ?>"> 
    <textarea id="new_comment" name="new_comment" cols="100" rows="5"></textarea> 
    <input type="submit" value="post request"/> 
</form> 
+1

我可能会失明,但'submitForm()'函数在哪里? – adeneo

+0

我实际上已经尝试了两种方法之一,例如提交按钮和一个链接“” – user2300933

+0

问题是,您的函数不会阻止表单提交按钮的默认操作。 – Pointy

回答

0

你必须停止事件的发生。有一个常用的功能,这在javascript:

e.preventDefault; // e is the event that you need to pass to your function. 

或更改
<input type="submit" value="post request"/>

<input type="button" onclick="ajaxrequest(this);" value="post request"/> 

什么事情发生在您的形式,只是要通过JavaScript和页面会MOT处理由于表单提交而重新加载。
只需为自己修改此方法,它就能解决您的问题。

+0

贾斯廷,你真棒,这正是问题所在。然而,错误显示了我想要结果去的地方。它正在处理表单提交,现在我收到错误“GET to undefined not supported。”它还在拉我的表格值吗? – user2300933

+0

我觉得它非常简单。我原来的代码只是缺少“返回false”;在表单的onsubmit属性中。谢谢大家的帮助! – user2300933

+0

相关提示我很高兴你解决它。 – Justin

0

由于尖指出的那样,你可能想阻止提交按钮的默认点击事件从发射

submitForm(event) { 
    event.preventDefault(); 
} 

http://api.jquery.com/event.preventDefault/ < - 我的坏...

刚澄清,是你的完整代码?

+0

我没有看到你是在opencart中使用的TPL文件的一部分。 – user2300933

+0

OP没有使用jQuery ... –