여기에 PHP 코드가 있습니다.이 코드에서는 역 이름과 ID 및 무작위 승객이 생성됩니다.문서 준비 기능으로 PHP에서 콤보 박스를 채우는 방법은 무엇입니까?
<?php
include_once('RestUtils.php');
include_once('Passengers.php');
class Station implements JsonSerializable
{
private $id;
private $name;
private $passengers;
public function __construct($id, $name)
{
$this->setId($id);
$this->setName($name);
$this->passengers = array();
}
//getters and setters
public function jsonSerialize()
{
$data = array();
$data['id'] = $this->id;
$data['name'] = $this->name;
$data['passengers'] = $this->passengers;
return $data;
}
}
$stations = generateStations();
$data = RestUtils::processRequest();
switch($data->getMethod())
{
// Get item
case 'get':
if(isset($data->getRequestVars()['stationId']))
{
// Prepare information for a specific station
$station = getStationWithId($stations, $data->getRequestVars()
['stationId']);
if($station != null)
{
echo RestUtils::sendResponse(200, json_encode($station),
'application/json');
}
else
{
echo RestUtils::sendResponse(404, 'Station not found!');
}
}
else
{
// Prepare station list
echo RestUtils::sendResponse(200, json_encode($stations),
'application/json');
}
break;
}
function generateStations()
{
$stations = array();
for($i = 1; $i <= 5; $i++)
{
$stations[] = new Station($i, 'İstasyon ' . $i);
$passengerIds = array();
foreach(generatePassengers() as $j)
{
$passengerIds[] = $j->getId();
}
$stations[$i - 1]->setPassengers($passengerIds);
}
return $stations;
}
function generatePassengers()
{
$passengers = array();
$numberOfPassengers = rand(0, 20);
for($i = 0; $i < $numberOfPassengers; $i++)
{
$from = rand(0, 5);
$to = rand(0, 5);
$arrivalTime = rand(0, 100);
$waitingTime = rand(0, 100);
$passengers[] = new Passenger($i, $from, $to, $arrivalTime, $waitingTime);
}
return $passengers;
}
function getStationWithId($stations, $id)
{
foreach ($stations as $i)
{
if($i->getId() == $id)
{
return $i;
}
}
return null;
}
?>
페이지가 사용자 이름과 ID로 방송국을 선택할 때, 그가 얼마나 많은 승객을 볼 수있는 문서 준비 function.After를 사용하여로드 할 때 내가 생성 스테이션 이름과 스테이션 ID를 가진 콤보 상자를 채우려 그 역에 있고 승객의 ID는 또한 Station.php에서 반환되어야합니다. 일반적으로 html 코드에서이 선택 옵션을 선택 했으므로 그 중 하나를 선택할 때 아무 것도하지 않는 스테이션 만 표시합니다.
<select name="selectStation" id="selectStation" ></select>
나는 다음을 시도했다.
$(document).ready(function() {
$.getJSON("Stations.php", function(jsonData){
$.each(jsonData, function(key,value) {
$('#selectStation')
.append($("<option></option>")
.attr("value",key)
.text(value));
});
});
});
콤보 박스 값을 객체 Object로 얻었습니다. 왜 이런 일이 발생합니까? Stations.php에 따라 페이지가로드 될 때 콤보 상자를 채울 수있는 방법. 감사합니다. 모든 응답을 환영합니다.
당신은 몇 가지 기본 옵션을 가지고 있습니다. (1) JSON (2)에서 목록을 채우기 위해 자바 스크립트를 사용하기 전에 필요한 모든 데이터를 잡고 JSON 표현을 포함하는 javascript 요소를 만듭니다. php (3)를 사용하여 올바른 옵션을 출력합니다. html 관련 목록을 채우기 전에 필요한 데이터를 검색하는 ajax 호출을 시작합니다. 나는 # 1을 수시로 사용하지만 2 번을 제안 할 것이다. – enhzflep
@enhzflep reply.Host 주셔서 감사합니다. 나는 세 번째 옵션을 사용해야합니다. 문서 작성 기능과 아약스 호출을 사용해야합니다. 그러나 그 방법을 모르겠습니다./ – ntf