【发布时间】:2017-02-23 16:31:48
【问题描述】:
我正在尝试使用简单的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
5. GetAllScheduledMeetings() 因某种原因再次被调用,这一切都发生了,并且在此调用结果中从服务器获取了真实值。
有人知道为什么会这样吗?为什么会进行两次调用,为什么在第一次调用中我没有从服务器获取数据?
【问题讨论】:
标签: javascript jquery json ajax