【问题标题】:Ajax Request Results in form being submitted aswell表单中的 Ajax 请求结果也被提交
【发布时间】:2010-12-11 07:40:45
【问题描述】:

正如标题所述,我的 Ajax 调用实际上导致表单提交到其默认操作,为什么?我以前从未遇到过这种情况,我所有其他的 ajax 调用都没有这样做过。

function newAjax(t,u){ //t = type(post/get), u = url var资源=空; 如果(窗口。ActiveXObject){ 资源 = 新 ActiveXObject("Microsoft.XMLHTTP"); } 否则如果(window.XMLHttpRequest){ 资源 = 新 XMLHttpRequest(); resource.overrideMimeType('text/html'); } 资源.open(t,u,false); resource.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 返回资源; } 函数 send_newsletter(){ formObj = document.getElementById("news_form"); var 输入 = formObj.getElementsByTagName("INPUT"); var 参数 = ""; for(i = 0; i

在 .send 行之前一切正常,这也是导致表单提交的错误(我也不知道 ajax 请求是否真的成功了)。

send_newsletter 函数从输入 type="image" 元素调用 onclick="send_newsletter()"

请不要告诉我使用 jQuery 或其他库,尽管我很乐意这样做,但我们不能使用任何外部库、公司指南等等。

【问题讨论】:

    标签: ajax forms submit


    【解决方案1】:

    “图像”类型的输入将behave the same as a submit button。使用锚或按钮类型的输入来触发您的方法。

    <input type="button" onclick="send_newsletter()" value="Send" />
    
    <button onlclick="send_newsletter()">... </button>
    
    <a href="#" onclick="send_newsletter(); return false;"><img src="... /></a>
    

    【讨论】:

    • 啊,谢谢你的链接,从来不知道图像输入可以作为提交。我将通过点击转换为 img,谢谢
    【解决方案2】:

    您是否使用提交按钮来调用send_newsletter

    onreadystatechange 回调函数 'ajaxResult' 未被调用,因为您正在对服务器进行同步调用:

    resource.open(t,u,false);
    

    如果您想调用ajaxResult,请将其更改为:

    resource.open(t,u,true);
    

    现在这就是我所看到的。您必须提供更多信息,例如如何拨打send_newsletter


    编辑:(以下作者评论)

    image 类型的 INPUT 是一个图形提交按钮

    【讨论】:

      猜你喜欢
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 2019-08-26
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      相关资源
      最近更新 更多