Проблемы в вызове ajax в MVC
Привет,
Я новичок в MVC. У меня есть одна таблица продуктов, которая имеет ProductID, ProductName и ProductRate. У меня есть один выпадающий список, в котором есть все имена продуктов. Теперь я пытаюсь выбрать имя продукта, и после этого выбора он должен заполнить мое текстовое поле ProductRate. Код такой же, как и ниже, но он ничего не делает и никаких ошибок. Пожалуйста помочь.
<script type="text/javascript"> function GetPrice(_this) { var x = document.getElementById("productID"), selectedValue = x.value; alert("_this" + _this.SelectedValue); var pid = selectedValue; alert(pid); var url = '@Url.Action("GetPrice","Sales")'; alert(url); $.ajax({ type:"POST", url: 'Sales/GetPrice', contentType: "application/json; charset=utf-8", data: {pid: pid }, cache:false, dataType: json, async: true, processData:false, success: function (data) { alert("yay1"); }, failure: function (response) { alert("Fail"); } }); }; </script> @using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <div class="editor-field"> <div class="editor-label"> @Html.LabelFor(model => model.ProductId) </div> @Html.DropDownListFor(model => model.ProductId, new SelectList(ViewBag.ProductList, "ProductId", "ProductName" ), "Select Product", new { id = "productID", onchange="GetPrice(this);"}) @Html.ValidationMessageFor(model => model.ProductId, "", new { @class = "text-danger" }) <span class="input-group-addon"><span class="glyphicon glyphicon-asterisk"></span></span> </div> <div class="editor-label"> @Html.LabelFor(model => model.Rate) </div> <div class="editor-field"> @Html.EditorFor(model => model.Rate, new { id = "idRate"}) @Html.ValidationMessageFor(model => model.Rate) </div>\ </fieldset> }
Вот мой контроллер "SalesController.cs" код:
[HttpPost] public JsonResult GetPrice(int ProductId) { return Json(""); }
Что я уже пробовал:
Я попробовал этот код и поместил точку останова в часть контроллера только для того, чтобы посмотреть, выполняется ли мой ajax-вызов, но он, похоже, не работает . предупреждение часть выше AJAX-вызов работает, но не внутри AJAX-вызов. Пожалуйста помочь.
Bryian Tan
Я думаю, потому что имя параметра метода не совпадает. Попробуйте изменить данные: {пид: пид }, для сведения: {Кодтовара: пид }
F-ES Sitecore
Как было сказано выше, у вас есть проблема с несоответствием имен параметров. При использовании ajax полезно узнать, как можно отлаживать потенциальные проблемы
https://forums.asp.net/t/1982579.aspx?Using+the+browser+s+dev+tools+to+diagnose+ajax+problems+and+other+things+
Dhyanga
Спасибо Вам, Брайан, за оперативный ответ. Я попробовал использовать имя параметра как ProductId, но без изменений. :(
F-ES Sitecore
Попробуйте другой тип контента
contentType: "application/x-www-form-urlencoded; charset=UTF-8"
Dhyanga
Нет, это тоже не сработало.
Dhyanga
Еще раз спасибо за отладочную информацию ajax. Я вижу эту проблему и теперь могу ее исправить. Большое спасибо.
Kornfeld Eliyahu Peter
Поскольку вы находитесь в Razor, вы должны написать @onchange me think...
Kornfeld Eliyahu Peter
Я также сказал бы, что взгляд на результат HTML может помочь...