2009-10-29 84 views
0

由於標題指出我的Ajax調用實際上是導致表單被提交到其默認操作,爲什麼?我從來沒有遇到過這個,我所有其他的Ajax調用都沒有做過。Ajax請求中的表單被提交的結果

 
function newAjax(t,u){ //t = type(post/get), u = url 
    var resource = null; 
    if (window.ActiveXObject) { 
     resource = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    else if (window.XMLHttpRequest) { 
     resource = new XMLHttpRequest(); 
     resource.overrideMimeType('text/html'); 
    } 
    resource.open(t,u,false); 
    resource.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
    return resource; 
} 

function send_newsletter(){ 
    formObj = document.getElementById("news_form"); 
    var inputs = formObj.getElementsByTagName("INPUT"); 
    var parameters = ""; 
    for(i = 0; i < inputs.length; i++){ 
     parameters += inputs[i].name+"="+encodeURI(inputs[i].value); 
     if(i != inputs.length-1){ 
      parameters += "&"; 
     } 
    } 
    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); 
} 

這一切工作正常的高達。發送線,這是導致該表單提交藏漢開溜(我也有不知道如果AJAX請求實際上下車)。

的send_newsletter功能從輸入型調用的onclick =「send_newsletter()」

請不要告訴我使用jQuery或其他庫,就像我很想=「圖像」元素,我們不能使用任何外部圖書館,公司指導方針和任何內容。

回答

1

「image」類型的輸入將會是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> 
+0

啊,感謝您的鏈接,從來不知道圖像輸入工作提交。我只需使用onclick轉換爲img,謝謝 – Psytronic 2009-10-29 22:03:57

1

您是否正在使用提交按鈕來撥打send_newsletter

onreadystatechange回調函數'ajaxResult'因爲你在做服務器同步調用不叫:

resource.open(t,u,false); 

,如果你想ajaxResult被稱爲改變它:

resource.open(t,u,true); 

現在這就是我所看到的。您必須提供更多信息,例如您如何撥打send_newsletter


EDIT:(以下作者的評論)

一個INPUTimage型的是一個圖形提交按鈕