Jquery 返回值"undefined" .net 核心



我想从第一个下拉列出。

这一切都起作用,但是城市名称和价值只是返回"未定义"。*城市数量正确,但名称和价值总是"未定义"。*

控制器:

    [HttpPost]
    public ActionResult getCityJson(string stateId)
    {
        int _stateid = Convert.ToInt32(stateId);
        List<Cities> objcity = new List<Cities>();
        objcity = _db.Cities.Where(m => m.stateID == _stateid).ToList();
        SelectList obgcity = new SelectList(objcity, "CityID", "CityName", 0);
        return Json(obgcity);
    }

查看页面:

    $("#istateid").change(function () {
        var id = $("#istateid").val();
        $.ajax({
            url: '@Url.Action("getCityJson", "Home")',
            data: { stateId: id },
            cache: false,
            type: "POST",
            success: function (data) {
                var markup = "<option value='0'>Select City</option>";
                for (var x = 0; x < data.length; x++) {
                    markup += "<option value=" + data[x].Value + ">" + data[x].Text + "</option>";
                }
                $("#icityid").html(markup).show();
            },
            error: function (reponse) {
                alert("error : " + reponse);
            }
        });
    });

我还尝试了public jsonresult并返回jsonresult和公共选择列表并返回选择列表,但它们都没有工作。

,我也尝试过:

 $("#istateid").change(function () {
 $.ajax({
 type: "POST",
 url: '@Url.Action("getCityJson", "Home")',
 data: { stateId: $("#istateid > option:selected").attr("value") },
 success: function (data) {
   var items = [];
   items.push("<option>--Choose Your City--</option>");
   $.each(data, function () {
       items.push("<option value=" + this.Value + ">" + this.Text + "</option>");
   });
   $("#icityid").html(items.join(' '));
  }
}) });

我在浏览器中收到此内容:(TypeError:data [x]未定义。)

    $("#istateid").change(function () {
        var id = $("#istateid").val();
        $.ajax({
            url: '/Home/getCityJson',
            data: { stateId: id },
            cache: false,
            type: "POST",
            success: function (data) {
                var markup = "<option value='0'>Select City</option>";
                for (var x = 0; x < data.length; x++)
                { markup += "<option value=" + data[x].CityID + ">" + data[x].CityName + "</option>"; }
                $("#icityid").html(markup).show();
            },
            error: function (reponse) {
                alert("error : " + reponse);
            }
        });
    });
<option value="0">Select City</option>
<option value="undefined">undefined</option>
<option value="undefined">undefined</option>
<option value="undefined">undefined</option>

已解决:

items.push("<option value=" + this.value + ">" + this.text + "</option>");

价值和文字骆驼壳。特别感谢火星的@agua

我尝试的其他代码:

      $("#istateid").change(function () {
      $.ajax({
         type: "POST",
         url: '@Url.Action("getCityJson", "Admin")',
         data: { stateId: $("#istateid > option:selected").attr("value") },
         success: function (data) {
         var items = [];
          items.push("<option>--Choose Your Area--</option>");
          $.each(data, function () {
            items.push("<option value=" + this.Value + ">" + this.Text + "</option>");
           });
          $("#icityid").html(items.join(' '));
         }
       })
      });

控制器:

    [HttpPost]
    public JsonResult getCityJson(string stateId, string selectCityId = null)
    {
        return Json(getCity(stateId, selectCityId));
    }
    public SelectList getCity(string stateId, string selectCityId = null)
    {
        IEnumerable<SelectListItem> cityList = new List<SelectListItem>();
        if (!string.IsNullOrEmpty(stateId))
        {
            int _stateId = Convert.ToInt32(stateId);
            cityList = (from m in db.Cities where m.StateID == _stateId select m).AsEnumerable().Select(m => new SelectListItem() { Text = m.CityName, Value = m.CityID.ToString() });
        }
        return new SelectList(cityList, "Value", "Text", selectCityId);
    }

尝试以下:

            success: function (data) {
            var response=JSON.parse(data);
            var markup = "<option value='0'>Select City</option>";
            for (var x = 0; x < response.length; x++)
            { markup += "<option value=" + response[x].CityID + ">" + response[x].CityName + "</option>"; }
            $("#icityid").html(markup).show();
        },

最新更新