与两个php页面之间的通信有关的问题

时间:2011-03-25 14:25:07

标签: php javascript javascript-events

这是我的第一页,我使用组合框提交查询....

<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页面,我使用$ _POST来获取变量但它没有工作......

<?php
print "<br><br>D.Name<select name='t2' size='1' single>";
$conn=mysql_connect("localhost","root","");
mysql_select_db("mysql",$conn);
$str="select * from ".$_POST["t1"];
$rs=mysql_query($str);
while($row=mysql_fetch_array($rs))
{
    print "<option value=ASSAM>".$row['dname']."</option>";
}


mysql_close($conn);
print "</select>";
?>

4 个答案:

答案 0 :(得分:1)

在您执行任何操作之前,请先执行以下操作:

  1. 获取一个已建立的Javascript库(当有太多的浏览器细节需要​​检查时,不要自己编写AJAX调用,这可能会打断你的通话)。很容易得到像jQuery这样的东西,然后去(使用他们的文档轻松调用你的电话)。
  2. 拥有正确的PHP escape / checking / validation,您当前正在使用BARE POST变量进行SQL调用。巨大的禁忌。

答案 1 :(得分:0)

你这样做

$str="select * from ".$_POST["t1"];

除非您确实拥有与

等值相对应的表格
<option value="ANDHRA PRADESH">ANDHRA PRADESH</option>
<option value="ASSAM">ASSAM</option>
<option value="BIHAR">BIHAR</option>

您可能想要做类似

的事情
$str = "SELECT * FROM someTable WHERE someColumn = ".mysql_real_escape_string($_POST['t1']);

此外,

之后
$rs=mysql_query($str);

添加

if(!$rs) {
  trigger_error (mysql_error().'SQL: '.$str);
  exit();
}

如果你检查一下你正在做什么工作,你会发现它更容易调试。如果您仍未在表单提交中返回任何内容(这是我假设发生的事情),请检查您的Javascript。

答案 2 :(得分:0)

你唯一要理解的是:

没有 2个php页面。

有一个HTML / JS页面和一个php页面。

将浏览器中运行的HTML / JS代码与服务器上运行的PHP代码区分开来非常重要。

至于你的特殊问题,这很容易。

  

xmlhttp.open( “GET”, “infor.php”,TRUE);

它清楚地表明使用了GET方法。为什么你期望$ _POST数组中的任何数据呢? ;)

答案 3 :(得分:0)

他也没有在GET请求中发送任何参数

你需要形成像

这样的参数

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

记得为此包装url编码。

在php页面上你应该使用url_decode($ _ GET ['t1'])

我已在javascript代码的其他帖子中回答了