我在使用jQuery ajax調用構建的javascript內的數組時遇到問題。我可以創建數組,並知道它存在於jquery函數中,因爲我可以將其記錄在瀏覽器控制檯中。在函數運行後,我沒有選擇它,因爲它在crews = loadCrews()之後返回undefined 。這是我主要的JavaScript文件:Javascript和JQuery數組變量
$(document).ready(function(){
var crews = [];
console.log("loading crews")
crews = loadCrews();
console.log(crews);
$('#datetimepicker1').datetimepicker({
pickTime: false
});
$('#datetimepicker2').datetimepicker({
pickTime: false
});
$("#input_form").submit(function(){
console.log(crews)
var querystring = $(this).serialize();
alert(querystring)
return false;
});
});
function loadCrews(){
$.getJSON("url", function(data) {
var items = [];
$.each(data, function(key, val) {
items.push(val.UNID);
})
console.log(items)
return items
});
};
更新1:我使用的Ajax請求的回調,它開始變得有意義。感謝所有的好閱讀。不幸的是,即使在使用.done回調之後,我仍然無法傳回數組。
下面是更新後的代碼:
$(document).ready(function(){
loadCrews();
$('#datetimepicker1').datetimepicker({
pickTime: false
});
$('#datetimepicker2').datetimepicker({
pickTime: false
});
$("#input_form").submit(function(){
var querystring = $(this).serialize();
alert(querystring)
return false;
});
});
function loadCrews(){
var url = //url of service for all crew names
$.getJSON(url)
.done(function(data) {
var crews = [];
$.each(data, function(key, val) {
crews.push(val.UNID);
})
console.log(crews)
return crews
})
.fail(function(jqxhr, textStatus, error) {
var err = textStatus + ", " + error;
console.log("Request Failed: " + err);
});
};
閱讀本文http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call – Misters