2012-04-16 51 views
-1

我無法訪問在php中創建的數組,以便在JavaScript塊中使用。 我知道在javascript中訪問php數組變量(來自ajax調用)

<?php echo json_encode($myArray); ?>

,但我沒有得到任何結果出來。

我有一個'index.html'文件,我嘗試通過javascript訪問數組。 html頁面不在下拉菜單中。當用戶在該下拉菜單中選擇一個項目時,所選項目將被用作參數從數據庫中檢索數據。

'ajax.js'文件包含執行'retrieve.php'文件的代碼,該文件從數據庫內容中構造數組('$ myArray')。所以數組通過ajax調用來檢索。

我能 '迴響' 將JavaScript代碼從我的PHP文件:

echo 'dataArray = ' . json_encode($data_array) . ';';

和使用JavaScript變量? 換句話說,如何使用新的'dataArray'變量來執行我的JavaScript代碼?

爲了獲得更大的圖像:我試圖在「Google圖表」中使用該數組,我需要使用javascript來顯示圖表。 我可以查詢所有數據並將其放入php數組中,但我沒有成功將其正確傳輸到使用javascript的HTML頁面並重新載入圖表。

編輯:我使用ajax調用no來重新加載整個頁面。

+0

你試圖讓你的JSON從服務器接收響應(JSON)作爲來自AJAX呼叫的迴應? – Mathletics 2012-04-16 13:37:01

+0

首先,**你不能**訪問javascript中的任何php變量。 – 2012-04-16 13:37:30

+0

@Mathletics:是的,我是。 – user729103 2012-04-16 13:47:29

回答

2

相反的" echo 'dataArray = ' . json_encode($data_array) . ';'; ",你應該只寫這 - "echo json_encode($data_array)"
,然後使用JSON.parse(response)解釋它在客戶端,其中響應

+0

謝謝!我設法通過在我的'xmlhttp.onreadystatechange'函數中使用'JSON.parse'來實現它,並提供JSON數據來繪製更新的圖表。我不確定這是否是最好的方法,或者我應該選擇使用jQuery。 – user729103 2012-04-17 06:28:40

0

是的,你可以通過指定上述json_encode函數使用這個數組的PHP

你可以使用它作爲關聯數組如果數組是聯想還是在PHP中使用,如果沒有關聯,你可以使用它作爲普通對象陣列。

1

我發現,要做到這一點,最好的辦法是,像這樣:

客戶端代碼:

<script> 
    var phpdata = <?=json_encode($jsData)?>; 
</script> 

Server代碼:

$jsData = ''; 
$jsData->first = $first; 
$jsData->second = $second_array; 

客戶端應用:

alert(phpdata.second[1]); 

編輯:

要使用AJAX得到PHP中的數組,使用jQuery http://api.jquery.com/jQuery.getJSON/

客戶端:

var stored_array; 
$.getJSON(url, function(data){ 
    stored_array = data; 
    // run any other code you wish to run after getting the array. 
}); 

服務器端:

print(json_encode($array)); 

這會得到一個JSON編碼變量,並將其存儲供您使用。

+0

如果在AJAX調用期間構建'$ jsData'變量,PHP能夠正確輸出嗎? – user729103 2012-04-16 13:49:55

+0

不完全確定你打算如何做到這一點。 你正在做一個Ajax調用來獲取數組,然後運行?或者當你第一次渲染頁面時你有數組嗎? – Rodik 2012-04-16 13:53:00

+0

最初,用戶必須選擇一些東西(這裏是:從一個下拉列表中),然後我做一個ajax調用來獲取數組,然後我將繪製圖表。當用戶從下拉菜單中選擇另一個項目時,我想更新圖表。 – user729103 2012-04-16 14:02:24