2010-11-21 80 views
-1

工作,我有一個簡單的表格:
<form id="formTest" name="formTest" action="" method="get">
<input id="txtPostcode" name="Postcode" type="text" class="txtBoxSmall" /> <input type="button" name="SubmitTheForm" id="btnSubmit" onClick="TestAjax()" value="submit" />
</form>
PHP後不使用Ajax

我的JavaScript代碼是:

function TestAjax(){ 
    var xmlhttp; 
    if (window.XMLHttpRequest) 
    { 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    { 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function() 
    { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 

     } 
    }; 
    xmlhttp.open("GET","autocomplete.php?value1=aaaaa&value2=fffff",true); 
    xmlhttp.send(); 
} 

我的問題是,在PHP文件autocomplete.php我不能像這樣訪問txtPostcode元素:

$postcodetext = $_GET[Postcode]; 

但如果我在擺脫了JavaScript函數的提交按鈕,並添加行動=「autocomplete.php」 到窗體標籤,將工作,但那麼當然它不是ajaxed。有人可以告訴我爲什麼我不能從$ _GET [Postcode]得到任何 值,當ajaxing?我知道我可以只傳遞URL中的txtPostcode的值,但我不想這樣做,是否有我能做的事情,我可以通過 $ _GET [Postcode]在PHP中調用訪問文本框? ?

謝謝。

+1

在未來,當你提出問題/答案/評論這將是格式化你的代碼中非常有用。請閱讀這裏的幫助:http://stackoverflow.com/editing-help。請注意,您可以在發佈後編輯您的帖子進行格式化。 – 2010-11-21 05:16:52

+1

這不是一個POST,它是一個GET。 – NickFitz 2010-11-21 05:18:12

回答

1

你需要改變這一行:

xmlhttp.open("GET","autocomplete.php?value1=aaaaa&value2=fffff",true); 

包括所有你想在$_GET[]獲得在PHP中的值。你可以這樣做:

var postcode = document.getElementById('txtPostcode').value; 
xmlhttp.open("GET","autocomplete.php?value1=aaaaa&value2=fffff&Postcode=" + postcode,true); 

和類似的任何你想在PHP中訪問的其他東西。

我完全同意下面的評論 - 看看jQuery,它會讓你的生活更輕鬆。從這裏開始,例如:

+1

Icyrock是正確的,你是如何解決你的代碼,但除非你有一個強大的理由不使用JavaScript庫,我強烈建議使用jQuery或Prototype來緩解在Ajax中工作的痛苦。 – 2010-11-21 05:22:57

+0

xmlhttp.open(「GET」,「...」);將創建新的ajax請求頁面,而不是直接提交表單值。 – KoolKabin 2010-11-21 05:41:01

+0

感謝您的幫助。這是我第一次使用論壇,你們很快回應,歡呼。 – Nathan 2010-11-21 06:54:43