簡體   English   中英

與兩個php頁面之間的通信有關的問題

[英]problem related to communication between two php pages

這是我使用組合框提交查詢的第一頁。

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

在執行任何操作之前,請先執行以下操作:

  1. 獲得一個已建立的Javascript庫(當有太多瀏覽器要檢查的細節可能打斷您的電話時,請自己編寫AJAX調用)。 輕松獲得jQuery之類的東西,然后就可以使用(使用其文檔輕松地進行通話)。
  2. 具有正確的PHP轉義/檢查/驗證 ,您當前正在使用BARE POST變量進行SQL調用。 巨大的不。

你做這個

$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個php頁面。

有一個HTML / JS頁面和一個php頁面。

將瀏覽器中運行的HTML / JS代碼與服務器上運行的PHP代碼區分開是非常重要的。

至於您的特定問題,這很容易。

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

它清楚地表明使用了GET方法。 為什么您會期望$ _POST數組中有任何數據呢? ;)

他也沒有在GET請求中發送任何參數

您需要形成如下參數

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

請記住為此包裝網址編碼。

在php頁面上,您應該使用url_decode($ _ GET ['t1'])

我在您的其他JavaScript標記帖子中回答了t,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM