2013-11-21 134 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/)。 –