2011-03-25 99 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的,他们非常相似这方面的工作。