无法将数据从JS发送到php

时间:2011-03-25 16:18:56

标签: php javascript ajax javascript-events

你好朋友 我有一个html页面,我想从中发送信息到PHP脚本。 看看这里的html页面......

<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"];
?>

但不知道为什么它不起作用....我无法从db获取数据。 看起来$ _GET [“t1”]对我不起作为任何人都可以帮我修复此错误。

2 个答案:

答案 0 :(得分:1)

问题似乎很简单;你没有向表格发送任何内容。

好像你假设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/

你可以在这里找到Prototype:http://www.prototypejs.org/

使用哪种AJAX并不重要,在这方面它们的工作方式非常相似。

答案 1 :(得分:0)

您应该创建参数 喜欢

var parms =“t1 =”+ document.getElementById('list1')。value;

和xmlhttp.open(“GET”,“infor.php?”+ parms,true);

这会将您的选择框t1发送到该php页面。

在php页面上,您可以通过打印$ _GET ['t1']

来检索参数