Функция json не вызывается с использованием jquery ajax в mvc

Здравствуйте, я хочу вставить данные через функцию json, но когда я нажимаю кнопку сохранения, тогда функция json не вызывает функцию mItem_Insert и показывает ошибку в интерфейсе Ошибка: функция Error () {[собственный код]}, и я использую вкладку, содержащую 2 вкладки, одна для элементов, а другая - категория элементов, а также отображается на эта страница jqgrid. любезно скажите мне, в чем проблема в этом коде и почему отображается эта ошибка.

Javascript

<script>
     function mSaveItem() {

            $.ajax({
                url: "@Url.Action("mItem_Insert")",
                type: "POST",
                contentType: "application/json;charset=UTF-8",
                data: {
                    CatCode:$('#txtNCatCode').val(),
                    CatDesc: $('#txtNCategoryDesc').val(),
                    HS_Code: $('#txtNHsCode').val(),
                    PurCode: $('#txtNPurCode').val(),
                    SaleCode: $('#txtNSaleCode').val(),
                    CostOfSaleCode: $('#txtNCostOfSaleCode').val(),
                    SaleCode_Trade:$('#txtNSaleCode_Trade').val(),
                    CostOfSaleCode_Trade: $('#txtNCostOfSaleCode_Trade').val()

                },
                dataType: "json",
                success: function (Record) {

                    if (Record.d == true) {

                        $('#Result').text("Your Record inserted");
                    }
                    else {
                        $('#Result').text("Your Record Not Insert");
                    }

                },
                error: function (errormessage) {
                    $('#Result').text("Error: " + Error);
                }
            });
            return false;
        }

</script>

HTML

<main class = "pt-5 mx-lg-5">
    <div class = "container-fluid mt-5">

        <!-- Nav tabs -->
        <ul class = "nav nav-tabs md-tabs nav-justified indigo" role = "tablist" >
            <li class = "nav-item" style = "background-color:#007bff">
                <a class = "nav-link active" data-toggle = "tab" href = "#panel5" role = "tab"> Items</a>
            </li>
            <li class = "nav-item" style = "background-color:#007bff">
                <a class = "nav-link" data-toggle = "tab" href = "#panel6" role = "tab"><span class = "glyphicon glyphicon-folder-open"></span> Items Category</a>
            </li>

        </ul>


        <!-- Items Tab panels -->



        <div class = "tab-content">
            <!--Panel 1-->
            <div class = "tab-pane fade in show active" id = "panel5" role = "tabpanel">
                <br>
                <button type = "button" id = "AddNew" value = "1" class = "btn btn-primary" data-toggle = "modal" data-target = "#centralModalLGInfoDemo" style = "float:left">Add New</button>

                <div class = "table-responsive">
                    <table id = "jqGrid" class = "table table-bordered table-striped"></table>
                    <div id = "jqGridPager"></div>
                </div>
            </div>
            <!--/.Panel 1-->

            <!--Items Model-->



            <!--Panel 2-->
            <div class = "tab-pane fade" id = "panel6" role = "tabpanel">
                <br>
                <button type = "button" id = "AddNew" value = "1" class = "btn btn-primary" data-toggle = "modal" data-target = "#ItemModel" style = "float:left">Add New Category</button>

                <div class = "table-responsive">
                    <table id = "jqItemCatgoryGrid" class = "table table-bordered table-striped"></table>
                    <div id = "jqGridItemCatgoryPager"></div>
                </div>

                <form action = "" method = "post">
                    <div class = "modal fade left" id = "ItemModel" tabindex = "-1" role = "dialog" aria-labelledby = "myModalLabel" aria-hidden = "true"
                         data-backdrop = "false">
                        <div class = "modal-dialog modal-side modal-top-left modal-notify modal-info" role = "document">
                            <!--Content-->
                            <div class = "modal-content" style = "margin-left:68%;">
                                <!--Header-->
                                <div class = "modal-header">
                                    <p class = "heading lead">Add New Item Category</p>
                                    <button type = "button" class = "close" data-dismiss = "modal" aria-label = "Close">
                                        <span aria-hidden = "true" class = "white-text">&times;</span>
                                    </button>
                                </div>
                                <!--Body-->

                                <div class = "modal-body" style = "width:80%">


                                    <h3 id = "Result"></h3>

                                    <div class = "form-row">
                                        <div class = "col">
                                            <!-- Requisition Req_NO -->
                                            <div class = "md-form">
                                                <label id = "txtDetailReq_ID">Category Code</label>
                                                @Html.TextBox("CatCode", (string)ViewBag.Category, new { @class = "form-control mr-sm-3", @id = "txtNCatCode", Required = true })
                                            </div>
                                        </div>
                                        <div class = "col">
                                            <!-- Requisition Date -->
                                            <div class = "md-form">

                                                @Html.TextBoxFor(m => m.CatDesc, new { @class = "form-control mr-sm-3", @id = "txtNCategoryDesc", @placeholder = "Item Description", Required = true })

                                                <label for = "lblItemDesc">Category Description</label>
                                            </div>
                                        </div>


                                    </div>

                                    <div class = "form-row">
                                        <div class = "col">
                                            <!-- Requisition Date -->
                                            <div class = "md-form">

                                                @Html.TextBoxFor(m => m.HS_Code, new { @class = "form-control mr-sm-3", @id = "txtNHsCode", @placeholder = "HS Code" })

                                                <label for = "lblHsCode">HS Code</label>
                                            </div>
                                        </div>

                                        <div class = "col">
                                            <!-- Requisition Date -->
                                            <div class = "md-form">

                                                @Html.TextBoxFor(m => m.PurCode, new { @class = "form-control mr-sm-3", @id = "txtNPurCode", @placeholder = "Pur Code", Required = true })

                                                <label for = "lblRequisitionDatepicker">Pur Code</label>
                                            </div>
                                        </div>
                                        <div class = "col">
                                            <!-- Job -->
                                            <div class = "md-form">

                                                <input type = "text" id = "PurCodeDescription" class = "form-control mr-sm-5" />
                                                <label for = "lbljob">Description</label>
                                            </div>
                                        </div>

                                    </div>

                                    <div class = "form-row">
                                        <div class = "col">

                                            <div class = "md-form">

                                                @Html.TextBoxFor(m => m.SaleCode, new { @class = "form-control mr-sm-3", @id = "txtNSaleCode", @placeholder = "Sale Code" })

                                                <label for = "lblNsaleCode">Sale Code</label>
                                            </div>
                                        </div>
                                        <div class = "col">
                                            <!-- Job -->
                                            <div class = "md-form">
                                                <input type = "text" id = "SaleCodeDescription" class = "form-control mr-sm-5" />
                                                <label for = "lblSaleCodeDesc">Description</label>
                                            </div>
                                        </div>
                                    </div>

                                    <div class = "form-row">
                                        <div class = "col">
                                            <!-- Requisition Date -->
                                            <div class = "md-form">

                                                @Html.TextBoxFor(m => m.CostOfSaleCode, new { @class = "form-control mr-sm-3", @id = "txtNCostOfSaleCode", @placeholder = "Cost Of Sale Code" })

                                                <label for = "lblNCostOfSaleCode">Cost of Sale Code</label>
                                            </div>
                                        </div>
                                        <div class = "col">
                                            <!-- Job -->
                                            <div class = "md-form">
                                                <input type = "text" id = "CostOfSaleCodeDescription" class = "form-control mr-sm-5" />
                                                <label for = "lblNCostOfSaleCodeDescription">Description</label>
                                            </div>
                                        </div>
                                    </div>

                                    <h6 style = "color:black; display:none">For Trade Only</h6>

                                    <div class = "form-row" style = "display:none">
                                        <div class = "col">

                                            <div class = "md-form">

                                                @Html.TextBoxFor(m => m.SaleCode_Trade, new { @class = "form-control mr-sm-3", @id = "txtNSaleCode_Trade", @placeholder = "Sale Code Trade" })

                                                <label for = "lblNSaleCode_Trade">Sale Code</label>
                                            </div>
                                        </div>
                                        <div class = "col">
                                            <!-- Job -->
                                            <div class = "md-form">
                                                <input type = "text" id = "SaleCodeDescriptionTrad" class = "form-control mr-sm-5" />
                                                <label for = "lblNCostOfSaleCodeDescriptionTrade">Description</label>
                                            </div>
                                        </div>
                                    </div>

                                    <div class = "form-row" style = "display:none">
                                        <div class = "col">

                                            <div class = "md-form">

                                                @Html.TextBoxFor(m => m.CostOfSaleCode_Trade, new { @class = "form-control mr-sm-3", @id = "txtNCostOfSaleCode_Trade", @placeholder = "Cost Of Sale Code Trade" })

                                                <label for = "lblNCostOfSaleCodeTrade">Cost Of Sale Code Trade</label>
                                            </div>
                                        </div>
                                        <div class = "col">
                                            <!-- Job -->
                                            <div class = "md-form">
                                                <input type = "text" id = "CostSaleCodeDescT" class = "form-control mr-sm-5" />
                                                <label for = "lblNCostOfSaleCodeTradeDesc">Description</label>
                                            </div>
                                        </div>
                                    </div>

                                    <div class = "justify-content-center">
                                        <div class = "modal-footer">
                                            <button type = "reset" class = "btn btn-default" data-dismiss = "modal">Close</button>
                                            <button id = "btnItemSave" type = "submit" class = "btn btn-danger " onclick = "mSaveItem()">Save</button>
                                        </div>
                                    </div>


                                </div>

                                <!-- Default form contact -->

                            </div>
                            <!--Footer-->

                        </div>
                        <!--/.Content-->
                    </div>
                </form>
            </div>
            <!--/.Panel 2-->





            </div>


        </div>
    </main>

Функция Json в C# #region Items Insert

      public JsonResult mItem_Insert(Items objItem)
        {

            try
            {
                objclsItems.ItemsInsert(objItem);
                ModelState.Clear();

                return Json("", JsonRequestBehavior.AllowGet);
            }
            catch (Exception)
            {

                throw;
            }

        }
  public int ItemsInsert(Items mitem)
        {
            try
            {
                con.Open();
                tr = con.BeginTransaction();


                cmd = new SqlCommand("Select Right('000' + Cast(ISNULL(MAX(CatCode),0)+1  as varchar(2)) + '', 3) from ItemCategory", con);
                cmd.Transaction = tr;
               string Cat_Code = cmd.ExecuteScalar().ToString();

                cmd = new SqlCommand("Sp_ItemCategoryInsert", con);

                cmd.Parameters.AddWithValue("@CatCode", Cat_Code);
                cmd.Parameters.AddWithValue("@Comp_Id", 1);

                if (mitem.CatDesc != null)
                    cmd.Parameters.AddWithValue("@CatDesc", mitem.CatDesc);
                else
                    cmd.Parameters.AddWithValue("@CatDesc", string.Empty);

                if (mitem.PurCode != null)
                    cmd.Parameters.AddWithValue("@PurCode", mitem.PurCode);
                else
                    cmd.Parameters.AddWithValue("@PurCode", string.Empty);

                if (mitem.SaleCode != null)
                    cmd.Parameters.AddWithValue("@SaleCode", mitem.SaleCode);
                else
                    cmd.Parameters.AddWithValue("@SaleCode", string.Empty);

                if (mitem.CostOfSaleCode != null)
                    cmd.Parameters.AddWithValue("@CostOfSaleCode", mitem.CostOfSaleCode);
                else
                    cmd.Parameters.AddWithValue("@CostOfSaleCode", string.Empty);

                if (mitem.SaleCode_Trade != null)
                    cmd.Parameters.AddWithValue("@SaleCode_Trade", mitem.SaleCode_Trade);
                else
                    cmd.Parameters.AddWithValue("@SaleCode_Trade", string.Empty);

                if (mitem.CostOfSaleCode_Trade != null)
                    cmd.Parameters.AddWithValue("@CostOfSaleCode_Trade", mitem.CostOfSaleCode_Trade);
                else
                    cmd.Parameters.AddWithValue("@CostOfSaleCode_Trade", string.Empty);

                if (mitem.HS_Code != null)
                    cmd.Parameters.AddWithValue("@HS_Code", mitem.HS_Code);
                else
                    cmd.Parameters.AddWithValue("@HS_Code", string.Empty);


                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Transaction = tr;
                cmd.ExecuteNonQuery();


                tr.Commit();
                return i;
            }
            catch (SqlException sqlex)
            {
                tr.Rollback();
                throw sqlex;  // read all sql error 
            }
            catch (Exception ex)
            {
                tr.Rollback();
                throw ex; // General execption

            }
            finally
            {
                con.Close();
            }
        }
error: function (errormessage) { $('#Result').text("Error: " + Error); } - каково значение errormessage - сообщение, которое вы получаете, связано с тем, что Error является встроенной функцией, поэтому использование этого бесполезно для отладки - используйте переданный в errormessage, тогда ваша отладка может продолжаться
Jaromanda X 03.10.2018 08:46

все еще такая же проблема, я удаляю эту строку.

hello 03.10.2018 08:54

Удалить? Вместо этого я предложил $('#Result').text("Error: " + errormessage); ... тогда вы получите полезное сообщение об ошибке - без полезного сообщения об ошибке меньше шансов помочь вам

Jaromanda X 03.10.2018 08:58

Я заметил type: "POST" в вашем AJAX, вы указываете атрибут [HttpPost] для метода действия mItem_Insert? Если вы не укажете это, ваш вызов AJAX никогда не достигнет контроллера, поскольку по умолчанию он использует GET.

Tetsuya Yamamoto 03.10.2018 08:58

Проблема решена . Когда я использую GET. Как я могу это сделать, если выбрать категорию элемента и вернуть вкладку категории элемента. после вставки данных.

hello 03.10.2018 09:21
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

я изменил ваш код сообщением

$.post("@Url.Action("mItem_Insert")",
            {
                CatCode: $('#txtNCatCode').val(),
                CatDesc: $('#txtNCategoryDesc').val(),
                HS_Code: $('#txtNHsCode').val(),
                PurCode: $('#txtNPurCode').val(),
                SaleCode: $('#txtNSaleCode').val(),
                CostOfSaleCode: $('#txtNCostOfSaleCode').val(),
                SaleCode_Trade: $('#txtNSaleCode_Trade').val(),
                CostOfSaleCode_Trade: $('#txtNCostOfSaleCode_Trade').val()
            },
            function (record) {
                if (record.d === true) {
                    $('#Result').text("Your Record inserted");
                }
                else {
                    $('#Result').text("Your Record Not Insert");
                }

            }).fail(function(response) {
                $('#Result').text("Error: " + response.responseText);
        });

onclick (), я вызываю эту функцию, которую вы можете увидеть в кнопке сохранения.

hello 03.10.2018 08:50

Все еще та же проблема.

hello 03.10.2018 08:56

Можете ли вы попробовать еще раз, пожалуйста.

go.. 03.10.2018 09:02

Он работает, и вы можете сказать мне, что у меня есть две вкладки, когда вкладка два выбирается, что означает категорию элемента, нажмите кнопку добавления новой и всплывающее окно, затем нажмите кнопку «Сохранить» после обновления страницы по умолчанию, выбрана вкладка 2.

hello 03.10.2018 09:19

Как я могу это сделать, если выбрать категорию элемента и вернуть вкладку категории элемента. после вставки данных.

hello 03.10.2018 09:20

Ваш URL-адрес должен быть @Url.Action("mItem_Insert","ControllerName"). где имя контроллера - это имя вашего контроллера.

Кроме того, вместо использования @Url.Action непосредственно в jquery, вы всегда можете назначить его атрибуту элемента data-url, а в jquery извлечь этот url и использовать его в ajax:

<div id = "urlDiv" data-url = "@Url.Action(blahblah)"></div>

<script>
var url = $('#urlDiv').data('url');
console.info(url);   // test that url is correct

$.ajax({
url:url
...
});
</script>

Другие вопросы по теме