これが私のJavaScriptです:
<script type="text/javascript">
$(function () {
$("select#City_DDL_ID").change(function (evt) {
if ($("select#City_DDL_ID").val() != "-1") {
$.ajax({
url: "/Home/GetHotels",
type: 'POST',
dataType: "json",
data: { id: $("select#City_DDL_ID").val() },
success: function (response) {
// $('#Hotel_DDL_ID').attr('disabled', false);
$("select#Hotel_DDL_ID").replaceWith(response);
},
error: function (xhr) {
alert("Something went wrong, pleae try again");
}
});
}
});
});
Index.cshtmlは次のとおりです。
@model RoomReservation.Webb.Models.HomeViewModel
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
<fieldset>
<legend>Select a city and a hotel</legend>
<br />
<br />
<br />
@Html.DropDownListFor(x=>x.City_DDL_ID, new SelectList(Model.AllCities, "Value", "Text"),"...pick a city..." )
<br />
<br />
@Html.DropDownListFor(x => x.Hotel_DDL_ID, Enumerable.Empty<SelectListItem>(), "...pick a hotel...", new { disabled = "disabled"})
<br />
<br />
</
fieldset>
そして、これがajaxが呼び出すメソッドです:
public JsonResult GetHotels(int id)
{
if (id > 0)
{
var hotels = bl.ReturnAllHotelsInCity(id);
return Json(hotels);
}
else
{
throw new Exception("Hotel not reachable, please try again");
}
}
City_DDL_IDでCityを選択した後、Hotel_DDL_IDが消えます。私を助けてくれませんか、私はjavasrciptとajaxの初心者ですか?
これがnewsetスクリプトですが、まだ機能していません。
<script type="text/javascript" language="javascript">
$('#City_DDL_ID').change(function () {
var selectedCity = $(this).val();
if (selectedCity != null && selectedCity != '-1') {
$.getJSON('@Url.Action("GetHotels")', { id: selectedCity }, function (hotels) {
var hotelsSelect = $('#Hotel_DDL_ID');
hotelsSelect.empty();
$.each(hotels, function (index, hotel) {
hotelsSelect.append($('<option/>',
{
value: hotel.Value,
text: hotel.Text
}));
});
$('#Hotel_DDL_ID').attr('disabled', false);
});
}
});
</script>
じゃあ何をすればいいの?
ご協力いただきありがとうございます。この最新のスクリプトは機能しています。デフォルトのブラウザをChromeに変更します。よろしくお願いします
PS管理者:質問に回答済みのマークを付ける方法は?