Как получить значения из выпадающего списка Ajax с другой страницы? PHP - PullRequest
0 голосов
/ 08 мая 2011

Я успешно создал несколько каскадных выпадающих списков, но не могу получить значения. Раскрывающиеся списки полностью созданы на другой странице, и я не знаю, почему, но я просто предположил, что он также вытянет выбранное имя и выбранное значение из списков. Когда я печатаю_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>";
} 

1 Ответ

2 голосов
/ 12 мая 2011

Ваш код может быть неполным, но из того, что есть, кажется, что «простая старая форма» не содержит информации о представлении:

<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")

Элементы выбора вставляются в соответствующий элемент 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

Если я упустил точку,расскажите нам больше о вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...