【发布时间】:2014-02-06 22:16:58
【问题描述】:
我在使用从 jquery ajax 调用构建的 javascript 中的数组时遇到问题。我可以创建数组,并且知道它存在于 jquery 函数中,因为我可以将它记录在浏览器控制台中。但是,在函数运行后我没有拾取它,因为它在 crees = loadCrews() 行之后返回为未定义.这是我的主要 javascript 文件:
$(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 );
});
};
【问题讨论】:
标签: javascript jquery ajax arrays