Любая идея, как это исправить, чтобы я не получил Javascript TypeError: правая часть ‘in’ должна быть объектом, есть строка

Любая идея, как это исправить, чтобы я не получил Javascript TypeError: правая часть ‘in’ должна быть объектом, есть строка

Имейте представление с 2 выпадающими списками, второе по умолчанию отключено. Когда выбор сделан в первом раскрывающемся списке, предполагается, что оба контроллера должны вызвать действие для получения списка значений для второго раскрывающегося списка, а затем использовать простой сценарий для очистки второго раскрывающегося списка, включить второй раскрывающийся список и заполните его результатами.

Когда я делаю выбор из первого раскрывающегося списка, включается второй раскрывающийся список, но значения не отображаются. Используя Ctrl-shift-i, я вижу ошибку TypeError: правая часть ‘in’ должна быть объектом, есть строка.

Но я использую список значений, а не строковую переменную …

Я проверил в диспетчере SQL, что запрос SQL работает для всех 3 различных опций, доступных в первом раскрывающемся списке.

Добавлено оповещение (attValues); в $ .post. Это приводит к тому, что весь документ HTML отображается в предупреждении, что говорит о том, что 404 страница не найдена.

Важной строкой выглядит следующее: {amp}lt;form method="post" action="../../../Error_404.aspx?selectedOption=SKU_SelectableAttribute_2" id="error404"{amp}gt;

контроллер

 [HttpPost] public ActionResult GetAttributeValues(string selectedOption) { JsonResult result = new JsonResult(); if (selectedOption != null) { string sql = "SELECT Title FROM BL_Attribute (NOLOCK) WHERE BL_Attribute.DeleteFlag = '0' AND AttributeGroupName = '"   selectedOption   "'"; using (SqlCommand selectAttValues = new SqlCommand(sql, P21SqlConnection)) { using (SqlDataReader reader = selectAttValues.ExecuteReader()) { List{amp}lt;string{amp}gt; attValues = new List{amp}lt;string{amp}gt;(); while (reader.Read()) { attValues.Add(reader["Title"].ToString()); } return Json(attValues, JsonRequestBehavior.AllowGet); } } } return Json(new { Success = "false" }); } 

Посмотреть

 @using System.Data @model Product @{ ViewBag.Title = "Attributes"; Layout = "~/Views/Shared/_VisualRuleLayout.cshtml"; var listAttGroups = new List{amp}lt;SelectListItem{amp}gt; { new SelectListItem { Text = "SKU_Color", Value = "SKU_Color"}, new SelectListItem { Text = "SKU Select Att 1", Value = "SKU_SelectableAttribute_1"}, new SelectListItem { Text = "SKU Select Att 2", Value = "SKU_SelectableAttribute_2"} }; } @section scripts{ {amp}lt;script{amp}gt; $(function () { $("#ApplyGroup").change(function () { var option = $(this).val(); $("#AttributeValue").empty(); $("#AttributeValue").prop('disabled', false); var url = "KCDA_PrdGrp_Attributes/GetAttributeValues?selectedOption="   option; $.post(url, function (attValues) { $.each(attValues, function (i, attValue) { $("#AttributeValue").append($('{amp}lt;option{amp}gt;{amp}lt;/option{amp}gt;').val(attValue).html(attValue)); }); }); }); }); {amp}lt;/script{amp}gt; } {amp}lt;center{amp}gt;{amp}lt;h3{amp}gt;Edit Attributes{amp}lt;/h3{amp}gt;{amp}lt;/center{amp}gt; @using (Html.BeginForm("Return", "KCDA_PrdGrp_Attributes", FormMethod.Post, new { name = "Return" })) { @Html.DropDownList("ApplyGroup", listAttGroups, new { @id = "ApplyGroup", @class = "form-control" }) @Html.DropDownList("AttributeValue", new List{amp}lt;SelectListItem{amp}gt;(), new { @id = "AttributeValue", @class = "form-control", disabled = "disabled" }) } 
Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector