使用jQuery使用Ajax调用从控制器查看获得JSON对象

问题描述 投票:0回答:3

我一直在尝试几个小时,现在要找出如何获得JSON对象后面的解决方案:

这是我考虑到与我什么都试过的共同作用:

$(document).ready(function () {
    $(".nav-link").click(function () {
        var chairChosen = $(this).attr("data-id");
        var perfDateId = $("#perfDate").attr("id");
        var totalCost = $("#totalMoney").html();
        window.alert(perfDateId);
        $.ajax({
            url: '/Booking/ReserveSeat1/?id=' + chairChosen + '&perfDateId=' + perfDateId,
            type: 'GET',
            dataType: 'json',
            success: function (data1) {

                $("#test").append(typeof data1);
                $("#test").append(" notConverted" + data1.Number);
                $("#test").append(" notConverted" + data1["Number"]);
                var result1 = jQuery.parseJSON(data1);
                $("#test").append("Converted jquery" + result1.Number);
                $("#test").append("Converted jquery" + result1["Number"]);
                var result2 = JSON.stringify(data1);
                var object1 = data1;
                $("#test").append("get object " + object1.Number)
                $("#test").append("Converted parse" + result2.Number);
                $("#test").append("Converted parse" + result2["Number"]);
            },
            error: function (error) {
                $(that).remove();
                DisplayError(error.statusText);
            }
        });

    });

});

我想提一提的数据,我不希望发送JSON数据,我只希望接受它。

下面的代码是在我的控制器:

[HttpGet]
    public ActionResult ReserveSeat1(int id, int perfDateId)
    {

        BookSeatResult bookSeat = new BookSeatResult()
        {
            Number = 10,
            Result = "a string"
        };

        return Json(bookSeat);
    }

还试图返回来自控制器的JSON响应。

这是在asp.net核心的MVC的Web应用程序。

更不要忘了提,当我做呼叫控制器响应,并且它返回一个对象类型

jquery asp.net .net asp.net-core asp.net-ajax
3个回答
1
投票

对JSON对象,它是大小写敏感的,这意味着data1.Numberdata1.number是不同的。

对于Asp.Net核心序列,其默认的序列是camelCase这意味着,在return Json(bookSeat);将返回一个JSON字符串象下面这样:

{"number":10,"result":"a string"}

对于这个字符串,如果你需要访问numberresult,你需要改用numberNumber

尝试

$("#test").append(data1.number);
$("#test").append(data1.result);

如果你想使用data1.Number,您需要更改asp.net核心在PascalCase下面的配置返回Startup.cs

services.AddMvc()
.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver())
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

0
投票

无论是删除方法的HttpGet属性或将其更改为HttpPost,然后再做AJAX POST

$.ajax({
  url: '/Booking/ReserveSeat1/?id=' + chairChosen + '&perfDateId=' + perfDateId,
  type: 'POST',
  dataType: 'json',
  success: function (data1) {

  }

//...

0
投票

感谢您的卷入,花一些时间与你的建议后,我设法找到一种方法来解决:

newObj.Add(bookSeat.Number.ToString());
        newObj.Add(bookSeat.Result);

        return Json(newObj.ToArray());

我现在返回一个数组,我访问鉴于如下:

  $("#test").append(data1[1]);

另外,我分析了正在接收回数据,所以我做了以下内容:

$("#test").append(data1["result"]);

现在我得到预期的字符串

© www.soinside.com 2019 - 2024. All rights reserved.