簡體   English   中英

將AJAX字符串發布到MVC控制器

[英]Posting AJAX string to MVC Controller

我正在嘗試使用AJAX將字符串(用戶單擊的href的名稱)發布到我的MVC控制器(然后它將用於根據該字符串過濾我的表格結果)。

雖然我設法將其發布(至少根據警報)在AJAX端,但它似乎無法正確到達控制器端,並且在我的快速錯誤捕獲(if語句)中被視為null。 。

請暫時不要使用無用的命名約定。 我一直在嘗試無數種方法來嘗試解決此問題,因此當我找到合適的解決方案時,可以正確命名:)。

我已經為此工作了很長一段時間,似乎無法解決難題,因此請您提供任何幫助! 我對AJAX和MVC剛起步,所以我希望這是一個小錯誤。 :)(僅供參考,我已經嘗試了post和get兩者似乎都產生了相同的結果?)

控制器:

[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 [對象對象]?

我在一個新的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調用中卻看不到任何身份驗證標頭

嘗試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM