我一直在尝试几个小时,现在要找出如何获得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应用程序。
更不要忘了提,当我做呼叫控制器响应,并且它返回一个对象类型
对JSON对象,它是大小写敏感的,这意味着data1.Number
和data1.number
是不同的。
对于Asp.Net核心序列,其默认的序列是camelCase
这意味着,在return Json(bookSeat);
将返回一个JSON字符串象下面这样:
{"number":10,"result":"a string"}
对于这个字符串,如果你需要访问number
和result
,你需要改用number
的Number
。
尝试
$("#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);
无论是删除方法的HttpGet
属性或将其更改为HttpPost
,然后再做AJAX POST
:
$.ajax({
url: '/Booking/ReserveSeat1/?id=' + chairChosen + '&perfDateId=' + perfDateId,
type: 'POST',
dataType: 'json',
success: function (data1) {
}
//...
感谢您的卷入,花一些时间与你的建议后,我设法找到一种方法来解决:
newObj.Add(bookSeat.Number.ToString());
newObj.Add(bookSeat.Result);
return Json(newObj.ToArray());
我现在返回一个数组,我访问鉴于如下:
$("#test").append(data1[1]);
另外,我分析了正在接收回数据,所以我做了以下内容:
$("#test").append(data1["result"]);
现在我得到预期的字符串