试图将php数组传递给Javascript

Trying to pass php array to Javascript

本文关键字:Javascript 数组 php      更新时间:2023-09-26

我已经疯狂地在网上搜索了一天,试图弄清楚为什么我的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);

有什么想法吗?

当调用$.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")

感谢评论说:失败的区分大小写和数据类型

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

http://us3.php.net/json_encode