将AJAX字符串发布到MVC控制器

时间:2019-03-19 14:09:49

标签: c# ajax asp.net-mvc

我正在尝试使用AJAX将字符串(用户单击的href的名称)发布到我的MVC控制器(然后它将用于根据字符串过滤我的表格结果)。

虽然我设法将其发布到AJAX端(至少根据警报),但它似乎无法正确到达控制器端,并且在我的快速错误捕获中被视为null(如果声明)。

请暂时不要使用无用的命名约定。我一直在尝试无数种方法来尝试解决此问题,因此,当我找到合适的解决方案时,便会正确命名:)。

我已经为此工作了很长一段时间,似乎无法解决难题,因此请您提供任何帮助!我对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” 但是控制台日志显示:WE WIN [Object object] ??

2 个答案:

答案 0 :(得分:1)

我已经在一个新的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);
}

警告结果=> {“ data”:“后端返回:\” test \“”}

这是对Web方法的简单ajax调用。您不会返回视图,所以我不理解

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

我还看到一个[Authorize]属性,您也许使用了一些身份验证,但在ajax调用中却看不到任何身份验证标头

答案 1 :(得分:1)

尝试一下:

$.each(data, function (i) { console.log("We WIN " + data[i].Serial_Number )});