2010-07-11 117 views
0

我有一個聯繫表,我想使用Ajax。Ajax函數不能正常工作

我的contact.php腳本工作正常,並且查詢字符串的構建正常,但是當我單擊提交按鈕時,頁面只刷新並在url.php後顯示查詢字符串,而不是contact.php

這是我的代碼:

<form name="myform"> 
       <input class="field" id="name" name="name" type="text" /> 
       <label for="name">Name *</label> 

       <input class="field" id="email" name="email" type="text" /> 
       <label for="email">E-mail *</label> 

       <label class="large" for="message">Message *</label> 
       <textarea id="message" name="message" cols="10" rows="10"></textarea> 

       <input class="submit" type="submit" value="Submit" onclick='ajaxFunction()'/> 
      </form> 

<!-- 

//瀏覽器支持代碼 功能ajaxFunction(){VAR ajaxRequest; //使Ajax成爲可能的變量!

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; 
     } 
    } 
} 
// Create a function that will receive data sent from the server 
ajaxRequest.onreadystatechange = function(){ 
    if(ajaxRequest.readyState == 4){ 
     var ajaxDisplay = document.getElementById('signup'); 
     ajaxDisplay.innerHTML = ajaxRequest.responseText; 
    } 
} 
var email = document.getElementById('email').value; 
var queryString = "?email=" + email; 
ajaxRequest.open("GET", "/sign_up/sign_up_test.php" + queryString, true); 
ajaxRequest.send(null); 

}

// - >

任何想法?

+0

你想提交什麼(姓名,電子郵件,信息,所有?)?並且是onsubmit處理程序的第二段代碼? – tcooc 2010-07-11 15:21:29

+0

第二段代碼是由submit按鈕的onClick調用的ajaxFunction。所有字段都要發送,contact.php處理輸入驗證 – user195257 2010-07-11 15:23:11

回答

1

把回報您提交虛假按鈕

<input class="submit" type="submit" value="Submit" onclick='ajaxFunction(); return false;'/> 

你的代碼提交上阿賈克斯,但也提交了關於提交,因爲你沒有阻止你的表格不能提交,把return false上onclick事件可以防止您的形式將根據表單中提供的操作進行提交,在這種情況下可以在同一頁面上提交,因爲您沒有對錶單執行任何操作。這就是爲什麼你在url中看到輸入字段爲查詢字符串。

0

這可能是因爲你的按鈕是「提交」類型,即自動提交表單..而你的ajax請求實際上也是並行的。結果取決於'sigup'元素所在的頁面。

請嘗試用「按鈕」替換「按鈕」,然後重試。

0

使其成爲onsubmit處理程序,並添加return false;以禁用重定向。

<form name="myform" onsubmit='ajaxFunction()'> 
       <input class="field" id="name" name="name" type="text" /> 
       <label for="name">Name *</label> 

       <input class="field" id="email" name="email" type="text" /> 
       <label for="email">E-mail *</label> 

       <label class="large" for="message">Message *</label> 
       <textarea id="message" name="message" cols="10" rows="10"></textarea> 

       <input class="submit" type="submit" value="Submit"/> 
      </form> 

//Browser Support Code 
function ajaxFunction(){ 
var ajaxRequest; // The variable that makes Ajax possible! 

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){return false;} 
    } 
} 
// Create a function that will receive data sent from the server 
ajaxRequest.onreadystatechange = function(){ 
    if(ajaxRequest.readyState == 4){ 
     var ajaxDisplay = document.getElementById('signup'); 
     ajaxDisplay.innerHTML = ajaxRequest.responseText; 
    } 
} 
var email = document.getElementById('email').value; 
var name = document.getElementById('name').value; 
var message = document.getElementById('message').value; 
var queryString = "?email=" + encodeURIComponent(email); 
queryString += "&name=" + encodeURIComponent(name); 
queryString += "&message=" + encodeURIComponent(message); //included other parameters 
ajaxRequest.open("GET", "/sign_up/sign_up_test.php" + queryString, true); 
ajaxRequest.send(null); 
return false; 
} 

可能。