2014-01-17 111 views
0

我想從php文件加載一個php數組到javascript文件中的javascript數組。

最初,我只是在做一個php文件中的var wordsArray = <?php echo json_encode($wordsArray) ?>;來得到它,但現在我已經把所有Javascript函數一個.js文件,它不能運行PHP。有沒有一個$.get函數可以返回一個php數組?

類似:

的JavaScript:Utilities.js文件

$.get("php/Quests.php", {}, 
    function(returned_data) { 
     var wordsArray = returned_data; 
    } 
); 

PHP:Quests.php文件

<?php  
    include 'DbConnect.php'; 
    $sql = $mysqli->query(
    "SELECT t.*, v.* 
    FROM task t 
    INNER JOIN vocabtask vt ON (t.id = vt.taskid) 
    INNER JOIN vocab v ON (v.id = vt.vocabid) 
    WHERE vt.taskid = 1"); 
    $wordsArray = array();    
    while ($row = $sql->fetch_assoc()) { 
     $wordsArray[$row['chinese']] = $row['english']; 
    } 
    mysqli_close($mysqli); 

    //return php array as json_encoded to js file through get function 
    echo json_encode($wordsArray); 

?> 

編輯:

在$不用彷徨的

或者相反,我試圖在PHP文件,這樣做:

echo "<script type='text/javascript'> var wordsArray =json_encode($wordsArray); </script>"; 
在JS

然後做:

alert(wordsArray[1]); 

會是這樣的工作?

+0

當頁面加載並讓外部js使用它作爲任何其他本地var時,你不能在js var中回顯json嗎? – ZombieBunnies

+0

@ZombieBunnies你能舉個例子嗎? – Growler

+0

你真的試過了你在這裏寫的代碼嗎? –

回答

1
try this. 

echo "<script type='text/javascript'> var wordsArray = " . json_encode($wordsArray) . "; 
    //this will output the contents of wordsArray into the console 
    console.dir(wordsArray); 

    // check the console. f12 or ctrl+shift+k 
</script>"; 
+0

...'alert(wordsArray [1]);'outputs' undefined' – Growler

+0

'console.dir(wordsArray);'你在控制檯中看到了什麼?或者查看源代碼以查看'json_encode($ wordsArray)' – adamS

+0

在我的js文件中返回的內容,我將'console.dir(wordsArray);'顯示了'object'。 – Growler

1

如果你的PHP返回一個JSON編碼的數據,你可以在你的JavaScript使用JSON.parse解析它:

function(returned_data) { 
    returned_data = JSON.parse(returned_data); 
} 

returned_data現在將是一個JSON對象,而不是原始字符串。