我一直在疯狂地搜索网络一天,试图找出我的javascript代码无效的原因。我试图使用JSON将数组从PHP传递给Javascript。之后我想在其他函数中使用它,因此有点使数组或变量全局。但是我无法让它工作,到目前为止我的代码是:
data = [];
$(document).ready(function() {
$.getJSON('database.php', function(phpdata){
// vad du vill göra här, allt retuneras i data-variabeln
console.log(phpdata);
data[0] = phpdata[0];
console.log(data[0]);
});
console.log(data);
有什么想法吗?
答案 0 :(得分:1)
当调用$.getJSON
时,JS引擎将与下一条指令平行,该指令为console.log(data);
。这种行为导致$.getJson
的异步性。
由于下一步计算并在下一毫秒内执行,因此网页未完全请求且数据仍处于其初始值([]
)。
你能做什么:
将所有必须对您的数据执行某些操作的说明放在另一个函数中,并在匿名函数function(phpdata) { ... }
上调用它。
像这样:
function dataLoaded(data) {
// show data in dom elements
// work with data, e.g. check for data["error"] = true or show the username from data["username"]
}
data = [];
$(document).ready(function() {
// Load JSON from server, wait for it and then work with it in dataLoaded(..)
$.getJSON('database.php', function(phpdata){
dataLoaded(phpdata);
});
}
// this is wrong:
// console.log(data);
要求database.php将返回JSON数据类型中的JSON数组。请参阅php手册中的json_encode
和header("CONTENT-TYPE: application/json")
。
感谢评论说:案例敏感和数据类型失败。
答案 1 :(得分:0)
database.php有什么作用?它可能应该输出一个JSON编码的字符串。