Отправка строки AJAX в контроллер MVC - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь опубликовать строку (имя ссылки, по которой щелкнул пользователь), используя AJAX на моем контроллере MVC (который затем будет использоваться для фильтрации результатов моей таблицы в соответствии со строкой).

Хотя мне удалось заставить его публиковать (по крайней мере, в соответствии с предупреждениями) на стороне AJAX, он, кажется, не поступает должным образом на стороне контроллера, и в моем быстром захвате ошибок это выглядит как ноль (оператор if).

Пожалуйста, извините за бесполезные соглашения об именах на данный момент.Я пробовал множество методов, чтобы попытаться исправить это, поэтому назову правильное имя, когда у меня будет правильное решение:).

Я уже давно работаю над этим и могуКажется, не решить загадку, поэтому любая помощь приветствуется, пожалуйста!Я очень новичок в AJAX и MVC в целом, поэтому я надеюсь, что это небольшая ошибка.:) (К вашему сведению, я пробовал и отправлять, и получать, и оба, кажется, дают один и тот же результат?)

Контроллер:

[Authorize]
    [HttpGet]
    public ActionResult GetSafeItems(string yarp)
    {
        using (CBREntities2 dc = new CBREntities2())
        {
            if (yarp == null)
            {
                ViewBag.safeselected = yarp;
            }
            var safeItem = dc.Items.Where(a => a.Safe_ID == yarp).Select(s => new {
                Serial_Number = s.Serial_Number,
                Safe_ID = s.Safe_ID,
                Date_of_Entry = s.Date_of_Entry,
                Title_subject = s.Title_subject,
                Document_Type = s.Document_Type,
                Sender_of_Originator = s.Sender_of_Originator,
                Reference_Number = s.Reference_Number,
                Protective_Marking = s.Protective_Marking,
                Number_recieved_produced = s.Number_recieved_produced,
                copy_number = s.copy_number,
                Status = s.Status,
                Same_day_Loan = s.Same_day_Loan
            }).ToList();

        //    var safeItems = dc.Items.Where(a => a.Safe_ID).Select(s => new { Safe_ID = s.Safe_ID, Department_ID = s.Department_ID, User_ID = s.User_ID }).ToList();
            return Json(new { data = safeItem }, JsonRequestBehavior.AllowGet);
        }
    }

Функция AJAX (на странице просмотра):

$('.tablecontainer').on('click', 'a.safeLink', function (e) {
            e.preventDefault();
            var yarp = $(this).attr('safesel');
            var selectedSafeZZ = JSON.stringify("SEC-1000");
            $.ajax({
                url: '/Home/GetSafeItems',
                data: { 'yarp': JSON.stringify(yarp) },
                type: "GET",
                success: function (data) {
                    alert(yarp);
                    console.log("We WIN " + data)
                },
                error: function (xhr) {
                    alert("Boohooo");
                }
            });

        })

** Оповещение показывает правильный тип: «SEC-1000», но в журнале консоли отображается: МЫ ВЫИГРЫВАЕМ [Объект объекта] ??

Ответы [ 2 ]

1 голос
/ 19 марта 2019

Попробуйте это:

$.each(data, function (i) { console.log("We WIN " + data[i].Serial_Number )});
1 голос
/ 19 марта 2019

Я попробовал что-то простое в новом проекте mvc:

Просмотр страницы основного текстового поля и кнопки:

<input type="text" id="txt_test" value="test"/>
<button type="button" class="btn" onclick="test()">Test</button>

<script type="text/javascript">
        function test()
        {
            var text = $("#txt_test")[0].value;

            $.ajax({
            url: '@Url.RouteUrl(new{ action="GetSafeItems", controller="Home"})',
            // edit 
            // data: {yarp: JSON.stringify(text)},
            data: {yarp: text},
            type: 'GET',
            dataType: 'json',
            contentType: "application/json; charset=utf-8",
            success: function(data) {
                // edit 
                // alert(JSON.stringify(data));
                alert(data.data);
            }});
        }           
</script>

Контроллер:

[HttpGet]
public ActionResult GetSafeItems(string yarp)
{
        return Json(new {data = string.Format("Back end return : {0}",yarp)}
        , JsonRequestBehavior.AllowGet);
}

Alert result => {"data": "Back back end: \" test \ ""}

Это простой ajax-вызов веб-метода. Вы не возвращаете представление, поэтому я не понимаю использование

if (yarp == null)
{
    ViewBag.safeselected = yarp;
}

Также я вижу атрибут [Authorize], вы, возможно, используете некоторую аутентификацию, и я не вижу никакого заголовка аутентификации в вашем вызове ajax

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...