我試圖使用簡單的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 –