問題:
2つのフォーム値(最小/最大価格)を入力しても、表示されたクエリ結果は更新されません。最初に入力したとき、結果は正しく表示されますが、その後フォーム値が新しいパラメーターで変更された場合、これらのパラメーターを反映するようにhtmlコードは更新されません。
HTMLコード:
<input type="text" size="5" placeholder="Min. price" id="price_min">
<input type="text" size="5" placeholder="Max. price" id="price_max">
<input type="button" onclick="getHotelInfo()" value="Get" />
<div id="hotel_info"></div>
JavaScriptコード:
function getHotelInfo() {
$.get('hotelservice.php?priceMin=' + $('input#price_min').val() + '&priceMax=' + $('input#price_max').val(), function(data) {
var hotelInfo = JSON.parse(data);
content = '<table style="font-size:10px;width:100%;"><tr><th>Name</th><th>Stars</th><th>Price</th></tr>';
for (var hotel=0; hotel<5;hotel++)
{
content += '<tr><td><a href="' + hotelInfo[hotel].externalLink + '">' + hotelInfo[hotel].name +'</a></td><td><center>' + hotelInfo[hotel].stars + '</center></td><td><center>' + hotelInfo[hotel].price + '</center></td></tr>';
}
content += '</table>';
$('#hotel_info').replaceWith(content);
});
}
PHPコード:
$priceMin = $_GET['priceMin'];
$priceMax = $_GET['priceMax'];
$xml_source = file_get_contents('http://www.kayak.com/h/rss/hotelrss/SE/vaxjo?mc=EUR');
$xml = simplexml_load_string($xml_source);
$result = array();
foreach ($xml->channel->item as $item) {
$kyk = $item->children('http://www.kayak.com/h/rss/hotelextension');
$price = (int)$kyk->price;
if ($price < $priceMax && $price > $priceMin) {
$entry = new stdClass();
$entry->name = (string)$item->title;
$entry->externalLink = (string)$item->link;
$entry->price = $price;
$entry->stars = (int)$kyk->stars;
$result[] = $entry;
}
}
echo json_encode($result);
必要な出力: フォームの値が変更され、getHotelInfo()が呼び出されると、新しい結果が反映されます。