【问题标题】:Submit form with ajax without reload the page?用ajax提交表单而不重新加载页面?
【发布时间】:2017-04-02 12:15:03
【问题描述】:

无论我使用 Jquery 和 Ajax 提交表单,我都遇到了问题,但它仍然将我重定向到表单的操作页面,我不明白外部的东西是否影响了函数或发生了什么。 这是我的代码:

<form action="add-niveau" method="POST" class="ajax">
  <div>
    <input type="text" name="name" placeholder="Your name">
  </div>
  <div>
    <input type="text" name="email" placeholder="Your email">
  </div>
  <div>
    <textarea rows="4" cols="20" name="comment"></textarea>
  </div>
   <input type="submit" value="send">
</form>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.12.4.min.js">      </script>
<script>
  $('form.ajax').on('submit', function() {
     return false;
  });
</script>

其他 ajax 脚本:

var ajaxRequest;

function ajaxFunction() {
try {

    // Opera 8.0+, Firefox, Safari
    ajaxRequest = new XMLHttpRequest();
} catch (e) {

    // Internet Explorer Browsers
    try {
        ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {

        try {
            ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {

            // Something went wrong
            alert("Your browser broke!");
            return false;
        }
    }
}
}

function getForm(objButton) {
ajaxFunction();
ajaxRequest.onreadystatechange = function() {
    if (ajaxRequest.readyState == 4) {
        document.getElementById("formTag").innerHTML =    ajaxRequest.responseText;
    }
}
var buttonValue = objButton.value;
ajaxRequest.open("get", "get-form/" + buttonValue, true);
ajaxRequest.send(null);
}

// Send form using ajax:
$('form.ajax').on('submit', function(e) {
  e.preventDefault();
});

【问题讨论】:

  • 将事件传递给您的函数并使用event.preventDefault
  • 打开控制台,检查错误。确保包含 jquery。
  • 能把你用ajax的代码贴出来
  • 我使用ajax将表单上传到我的网站的问题,在这一点上我遇到了上面的问题,但是当我在其他页面单独测试表单和功能时它工作正常,所以有些东西否则影响功能!

标签: javascript php jquery ajax forms


【解决方案1】:

你需要添加 event.preventDefault();在单击事件之后,因为您想阻止默认表单提交。

$('form.ajax').on('submit', function(event) { // pass the event to function

     event.preventDefault(); // add this line

     $.ajax({
         url: "test.php",
         context: document.body
     }).done(function() {
         alert('Done!');
     });

});

【讨论】:

  • 我使用ajax将表单上传到我的网站的问题,在这一点上我遇到了上面的问题,但是当我在其他页面单独测试表单和功能时它工作正常,所以有些东西否则影响功能!
猜你喜欢
  • 2012-08-06
  • 1970-01-01
  • 2021-11-12
  • 2013-10-14
  • 2017-09-19
相关资源
最近更新 更多