我试图使用简单的getJson
调用从服务器获取Json对象。getJson返回未定义的值而不是Json对象
在服务器端一切看起来不错。 JSON是创建并返回:
但在前端我的对象不是从服务器映射到返回的JSON。它在第一次调用时是未定义的,并且该值通过getJson再返回一次,并返回实际对象。
这是我的代码:
btnSaveNewMeeting.onclick = function() {
var vm = {
'Title': $('#eventTitle').val(),
'StartAt': $('#startdatepicker').val() + ' ' + $('#starttimepicker').val(),
'EndAt': $('#enddatepicker').val() + ' ' + $('#endtimepicker').val()
}
var meetings = GetAllScheduledMeetings();
if (CheckIfMeetingsAreOverlapping(vm.StartAt, vm.EndAt, meetings)) {
addNewMeetingModal.style.display = "none";
$.ajax({
type: 'POST',
url: "/Meeting/Create",
data: vm,
success: function() {
$('#calendar').fullCalendar('refetchEvents');
}
});
ClearPopupFormValues();
}
}
所以我想从GetAllScheduledMeetings();
获得价值,并把它放在meetings
对象。
var meetings = GetAllScheduledMeetings();
function GetAllScheduledMeetings() {
$.getJSON("/Meeting/GetAllScheduledMeetings", function (result) {
return result;
});
}
因此GetAllScheduledMeetings()
应该只调用服务器并返回结果。但那并没有发生。
当我在浏览器的控制台中进行调试时发生的事情是这样的: 1.在按钮单击GetAllScheduledMeetings()
被调用。 2. getJson调用服务器,json对象在那里创建并返回。 3.它可以追溯到前端,但跳过整个return result;
部分和返回undefine
价值var meeting = GetAllScheduledMeetings();
4.我得到的少数例外,因为会议是undefine
得到再次呼吁出于某种原因,这一切已经发生之后在这个调用结果中从服务器获得真正的值。
有人知道为什么会发生这种情况吗?为什么要打两个电话,为什么在第一次打电话时我没有从服务器获取数据?
哦,我明白了......但如何解决这个问题。我试图让一些变量之外的getJSON,但结果无论如何未定义在第一遍...什么是得到json对象与getJSON并返回它的最佳方式是什么? @ Booster2ooo –