2013-11-21 135 views
-1

我一直在寻找网络像疯了一整天,试图找出为什么我的JavaScript代码不工作。我正在尝试使用JSON将数组从PHP传递到Javascript。之后,我想在其他函数中使用它,因此有点使数组或变量全局。但我一直无法得到它的工作,这里是我的代码到目前为止:尝试将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); 

任何想法?

+1

console.log(phpdata)的输出是什么;? –

+0

是database.php回显json对象?如果是这样,database.php上的标题是否正确? – NaNpx

+5

这是***异步***! – adeneo

回答

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_encodeheader("CONTENT-TYPE: application/json")

感谢意见为:失败的大小写敏感和数据类型。

+1

这应该是'header('Content-Type:application/json')'(注意PHP指令区分大小写)。 –

+0

你很对! –

+0

只是一件小事:[没有像“JSON对象”](http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/)。 –