2011-03-25 143 views
0

你好朋友的 我有一個html頁面,我想發送信息到php腳本。 看看這裏的html頁面.....不能發送數據從JS到PHP

<html> 
<head> 

<script type="text/javascript"> 
function loadXMLDoc() 
{ 
var xmlhttp; 
if (window.XMLHttpRequest) 
    { 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    { 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
//frm.submit(); 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","infor.php",true); 
xmlhttp.send(); 
} 
</script> 

<body bgcolor="white"> 
<table style="position: absolute; left: 00px; top: 00px;"> 
<tr><td width="1000" height="400" style="background:#666666"> 
<table style="position: absolute; left: 40px; top: 40px;"> 
<tr><td width="900" height="300" style="background:#C8C8C8"> 
<form name="frm" action="info.php" method="post"> 




State Name<select name="t1" id="list1" size="1" single onchange="loadXMLDoc();"> 
<option value="ANDHRA PRADESH">ANDHRA PRADESH</option> 
<option value="ASSAM">ASSAM</option> 
<option value="BIHAR">BIHAR</option> 
<option value="CHATTISGARH">CHATTISGARH</option> 
<option value="DELHI">DELHI</option> 
<option value="GOA">GOA</option> 
<option value="GUJRAT">GUJRAT</option> 
<option value="HARYANA">HARYANA</option> 
<option value="KERLA">KERLA</option> 
<option value="MANIPUR">MANIPUR</option> 
<option value="ORISSA">ORISSA</option> 
<option value="PANJAB">PANJAB</option> 
<option value="TAMILNADU">TAMILNADU</option> 
<option value="WEST BANGAL">WEST BANGAL</option> 
</select> 
<div id="myDiv"> 
</div> 
</form> 
<input type="button" value="Close this window" onclick="self.close()"> 
</td></tr> 
</table> 
</body> 
</head> 
</html> 

,這裏是我的PHP腳本....

<?php 
print $_GET["t1"]; 
?> 

但是不知道爲什麼它不工作....我我無法從數據庫中獲取數據。 看起來像$ _GET [「t1」]不適合我,任何人都可以幫助我解決這個錯誤。

+2

除非你專門開始學習AJAX的內部工作,否則你應該真的使用jQuery或其他庫來提供方便的AJAX方法。 – meagar 2011-03-25 16:21:54

+0

在一個地方你可以調用文件'info.php'和另一個'infor.php',是否有拼寫錯誤? – mVChr 2011-03-25 16:22:46

+0

你有任何Javascript錯誤嗎? – Michael 2011-03-25 16:42:29

回答

0

您應該創建參數 像

VAR PARMS = 「T1 =」 +的document.getElementById( '列表1')值。

and on xmlhttp.open(「GET」,「infor.php?」+ parms,true);

這會將您的選擇框t1發送到該php頁面。

PHP頁面上,你可以通過打印$ _GET [ 'T1']

+2

你還應該對文本框的值進行編碼,以便它可以安全地插入到URL中:'var parms =「t1 =」+ encodeURIComponent(document.getElementById('list1')value);' – Michael 2011-03-25 16:48:49

+0

......。提及...... – Karthik 2011-03-25 17:00:29

1

這個問題似乎很簡單retrive參數;你沒有發送任何表單。

似乎你假設AJAX代碼發送表單,但它不。您必須手動將變量放入URL中。

我從來沒有做過AJAX你正在做他們(低於更多)的方式,但不是...

xmlhttp.open("GET", "infor.php", true); 

...你必須要通過變量「 infor.php」。請參閱本爲的URL字符串應該是什麼樣子的演示:

xmlhttp.open("GET", "infor.php?var1=value1&var2=value2", true);

...雖然你的具體情況,因爲你的變量沒有硬編碼而是從形式,你可以參考等形式變量這樣的:

xmlhttp.open("GET", "infor.php?t1=" + document.getElementById("list1").value, true);

...最後,你應該URL編碼數據,像這樣:

xmlhttp.open("GET", "infor.php?t1=" + encodeURIComponent(document.getElementById("list1").value), true);

這應該工作,但它既不漂亮,也不方便。你真的應該使用一些庫來做AJAX,而不是自己完成所有的本質工作。 jQuery和Prototype都提供了AJAX功能的優秀實現。

任何一個教程都會告訴你如何去做你想做的事情,這樣你就不必親自將URL變量提供給請求。

你可以在這裏找到的jQuery:http://jquery.com/

而且你可以在這裏找到原型:http://www.prototypejs.org/

它並不真的不管你使用哪一個AJAX的,他們非常相似這方面的工作。