0

タイトルに私のAjax呼び出しが実際にフォームをデフォルトのアクションに送信させていると述べているのに、なぜですか?私はこれまでこれに出くわしたことがありません。他のすべてのajax呼び出しがこれを行ったことはありません。

function newAjax(t、u){// t = type(post / get)、u = url
    var resource = null;
    if(window.ActiveXObject){
        リソース=新しいActiveXObject( "Microsoft.XMLHTTP");
    }
    else if(window.XMLHttpRequest){
        リソース=新しいXMLHttpRequest();
        resource.overrideMimeType('text / html');
    }
    resource.open(t、u、false);
    resource.setRequestHeader('Content-Type'、'application / x-www-form-urlencoded; charset = UTF-8');
    リソースを返します。
}

関数send_newsletter(){
    formObj = document.getElementById( "news_form");
    var input = formObj.getElementsByTagName( "INPUT");
    var parameters = "";
    for(i = 0; i <inputs.length; i ++){
        パラメータ+=input [i] .name + "=" + encodeURI(inputs [i] .value);
        if(i!= input.length-1){
            パラメータ+="&";
        }
    }
    var url = "whereitshouldbegoing.com";
    var ajax = newAjax( "POST"、url);
    ajax.onreadystatechange = ajaxResult;
    ajax.setRequestHeader( "Content-length"、parameters.length);
    ajax.setRequestHeader( "Connection"、 "close");
    ajax.send(parameters);
}

フォームを送信するバガーである.send行まではすべて正常に機能します(ajaxリクエストが実際にオフになるかどうかもわかりません)。

send_newsletter関数は、onclick = "send_newsletter()"を使用してinput type="image"要素から呼び出されます。

jQueryや他のライブラリを使用するように言わないでください。私が望む限り、外部ライブラリや企業ガイドラインなどを使用することはできません。

4

2 に答える 2

1

送信ボタンを使用して電話をかけていますsend_newsletterか?

onreadystatechange'ajaxResult'サーバーへの同期呼び出しを行っているため、コールバック関数は呼び出されません。

resource.open(t,u,false);

呼び出されたい場合は、次ajaxResultのように変更してください。

resource.open(t,u,true);

今のところそれが私が見ているものです。どのように電話するかなど、より多くの情報を提供する必要がありますsend_newsletterか?


編集:(次の著者のコメント)

INPUTタイプのはimageグラフィカルな送信ボタンです。

于 2009-10-29T18:09:45.247 に答える
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 に答える