0

正如标题所述,我的 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 < 输入长度; i++){
        参数 += 输入[i].name+"="+encodeURI(inputs[i].value);
        如果(我!=输入。长度-1){
            参数 += "&";
        }
    }
    var url = "whereitshouldbegoing.com";
    var ajax = newAjax("POST",url);
    ajax.onreadystatechange = ajaxResult;
    ajax.setRequestHeader("内容长度", parameters.length);
    ajax.setRequestHeader("连接", "关闭");
    ajax.send(参数);
}

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

从带有 onclick="send_newsletter()" 的 input type="image" 元素调用 send_newsletter 函数

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

4

2 回答 2

1

“图像”类型的输入与提交按钮的行为相同。使用锚或按钮类型的输入来触发您的方法。

<input type="button" onclick="send_newsletter()" value="Send" />

<button onlclick="send_newsletter()">... </button>

<a href="#" onclick="send_newsletter(); return false;"><img src="... /></a>
于 2009-10-29T18:48:35.937 回答
1

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

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

resource.open(t,u,false);

如果你想ajaxResult被称为改变它:

resource.open(t,u,true);

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


编辑:(在作者评论之后)

an INPUTof typeimage是一个图形提交按钮

于 2009-10-29T18:09:45.247 回答