簡體   English   中英

如何從其他頁面的Ajax下拉列表中檢索值? PHP

[英]How do you retrieve values from an Ajax drop down list from a different page? PHP

我已經成功創建了一些級聯下拉列表,但我似乎無法檢索值。 下拉列表完全在另一個頁面上創建,我不知道為什么,但我只是假設它將從列表中提取選擇名稱和選定值。 當我print_r($ _ REQUEST)時,第二次和第三次下拉列表中根本沒有信息。

第一頁只是一個簡單的形式,如下所示:

<center><div id="country"><b>Country</b></div></center>
</td><td><center><div id="province"><b>Province</b></div></center>
</td><td>

這是JavaScript

function showRecords(str,column,nextDiv)
{
if (str=="")
  {

  document.getElementById(nextDiv).innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {

    document.getElementById(nextDiv).innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","getRecords.php?"+column+"="+str,true);
xmlhttp.send();
}

這是它正在拉下拉的頁面

<?
require "functions.php";


if(isset($_REQUEST['region'])){
    $region=$_REQUEST['region'];
    getDepRecords("country","regions","region",$region,"province");
    }

if(isset($_REQUEST['country'])){

    $country=$_REQUEST['country'];
    getDepRecords("province","countries","country",$country,"");
}
?> 

這是具體的功能

function getDepRecords($column, $table, $depColumn, $dep, $nextDiv) {
    echo "<select name =".$column." id=".$column." 
    onchange=\"showRecords(this.value,'".$column."','".$nextDiv."')\">\n";
    $options = "";
    if (isset($_REQUEST)) {
        $selected = $_REQUEST[$column];
    }
    $query = "SELECT DISTINCT $column FROM $table WHERE 
    $depColumn = \"$dep\" ORDER BY $column ASC";
    $result = mysql_query($query);
    if (!$result) {
        $options = "<option>Error Retrieving Records</option>\n";
    }
    else {
      $options.= "<option value = ".NULL.">Select ".$column."</option>\n";
      $options.= "<option value = ".NULL."></option>\n";
        while ($row = mysql_fetch_assoc($result)) {
            $value = $row[$column];
            $options.= "<";
            $options.= "option value=\"";
            $options.= $value . "\"";
            if (isset($selected)) {
                if (($selected) == ($value)) {
                    $options.= " selected";
                }
                $options.= "";
            }
            $options.= ">";
            $options.= $value;
            $options.= "</option>\n";
        }

    }
    echo $options;
    echo "</select>";
} 

您的代碼可能不完整,但根據內容,似乎“普通舊表單”缺少提交信息:

<td>
  <center>
    <div id="country"><b>Country</b></div>
  </center>
</td>
<td>
  <center>
    <div id="province"><b>Province</b></div>
  </center>
</td>

如果你調用javascript函數(例如)

showRecords("canada","country","province")

select元素插入到相應的div中,但是沒有這些可以在沒有表單和動作的情況下使用。

Client HTML       Client javascript       web server       mySQL
    |                     |                    |             |
    |----------- get form page --------------->|             |
    |<--------- returns form page -------------|             |
    |                     |                    |             |
    |----- js event ----->|showRecords runs    |             |
    |                     |-- getRecords.php ->|             |
    |                     |                    |---- SQL --->|
    |                     |                    |<--- data ---|
    |                     |<- return content --|             |
    |<--- data to user ---|ajax received       |             |
    |                     |                    |             |
    |user submits form    |                    |             |
    |----- request to where? POST or GET? ---->|process.php? |
    |                     |                    |             |
    v                     v                    v             v

如果我錯過了這一點,請告訴我們有關您的代碼的更多信息。

暫無
暫無

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

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