私は2つのドロップダウン州とCity.According州選択された都市がロードされる必要があります。私は状態ドロップダウン変更イベントを使用してajaxメソッドを呼び出す市のドロップダウン。JqueryのAjaxコールはAsp.net mvcコントローラアクションメソッドを呼び出さない
HTML
<div class="row">
<div class="col-sm-6 ">
<div class="form-group">
<label>State</label>
@Html.DropDownListFor(m => m.State, Model.States, "Please select a State", new { @class = "form-control" })
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6 ">
<div class="form-group">
<label>Cities</label>
@Html.DropDownListFor(m => m.CityRegisterScreen, new SelectList(string.Empty, "Id", "Name"), "Please select a city", new { @class = "form-control" })
</div>
</div>
</div>
JavaScriptの これは、jQueryとJavascriptのコードが含まれています。
$(document).ready(function() {
$("#State").on("change", function() { // whenever a selection is made
$("#CityRegisterScreen").empty();
var id = $("#State").val();
$.ajax({
type: 'GET', // we are calling json method
url: '@Url.Action("GetCitiesByDistrict", "Account")',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: { id: id },
success: function (cities) {
$.each(cities, function (i, city) {
$("#CityRegisterScreen").append('<option value="' + city.value + '">' +
city.Text + '</option>');
});
},
error: function (ex) {
alert('Failed to retrieve cities.' + ex);
}
});
return false;
});
});
コントローラー これは
public JsonResult GetCitiesByDistrict(int id)
{
List<SelectListItem> cities = new List<SelectListItem>();
var city = new List<City>();
using (ApplicationDbContext context = new ApplicationDbContext())
{
city = context.Cities.Where(e => e.DistrictId == id).ToList();
}
return Json(new SelectList(city, "Id", "Name"), JsonRequestBehavior.AllowGet);
}
問題がアヤックス方法はcontroller.Iでアクションメソッドを呼び出していないことが呼ばれる二重のURLをチェックされている場合であるJSONを返すコントローラのアクションメソッドでありますDataTypeは完全です。しかし、Actionメソッドは呼び出されませんでした。
手動で新しいタブでそのURLを入力して、何が起こるかを見ることができますか?あなたはまだ問題を抱えていますか? –
URLを手動で入力すると、json結果は表示されません。代わりにログインページに行きます。 –
これは、要求が認証されていないことを意味します。あなたのアプリケーションには承認が必要なのでしょうか? –