试图将php数组传递给Javascript

时间:2013-11-21 22:48:07

标签: javascript php arrays database json

我一直在疯狂地搜索网络一天,试图找出我的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);

有什么想法吗?

2 个答案:

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

感谢评论说:案例敏感和数据类型失败。

答案 1 :(得分:0)

database.php有什么作用?它可能应该输出一个JSON编码的字符串。

http://us3.php.net/json_encode