2014-05-13 96 views
0

我有一個輸入字段,我想填充一堆可能的來源,但我需要從幾個不同的區域獲取這些源代碼:我的服務器上的文件和一些已經在jQuery中的文件。如何將PHP數組傳遞給jQuery?

輸入字段將顯示在一個iFrame中,所以我有一個.php,當它被調用爲一個源時,它會回顯一些html。

<?php 
$array = array('Louisville, KY', 'Denver, CO'); 
echo " 
<html> 
<head> 
<link rel='stylesheet' href='//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css'> 
    <script src='//code.jquery.com/jquery-1.10.2.js'></script> 
    <script src='//code.jquery.com/ui/1.10.4/jquery-ui.js'></script> 
    <link rel='stylesheet' href='/resources/demos/style.css'> 
    <script> 
    $(function() { 
    var availableTags = [ 
     'Boston, MA', 
     'New York City, NY', 
     'Los Angelos, CA' 
    ]; 
    availableTags = $.merge(availableTags, ".$array."); 

    $('#tags').autocomplete({ 
     source: availableTags 
    }); 
    }); 
    </script> 
    </head> 
<body> 
Select a voting option. 
<br> 
<span id='options'> 
<form method='post' action='/creations/tools/poll/pollstorage.php' target='mainframe'> 
<input id='tags' name='score'/> 
<input type='submit' value='Vote'/> 
</form> 
<br> 
</span> 
</body> 
</html> 
" 
?> 

在我將要呼應的iframe jQuery的,你可以看到,我嘗試合併在一起現有的jQuery陣列和PHP陣列的輸出:availableTags = $.merge(availableTags, ".$array.");。我試過了,沒有任何jQuery的作品。

我在這裏做錯了什麼?我應該如何去合併PHP數組和jQuery數組?

+0

PHP數組與Javascript數組非常不同。 – DNACode

+0

ik,這就是爲什麼我問如何做到這一點。 –

+2

旁註:在關閉PHP標記之前,您有一個缺失的結束分號。 –

回答

1

使用json_encode():

$.merge(availableTags, ". json_encode($array)."); 
+0

jQuery代碼的其餘部分已經開始重新工作,但數組仍然沒有合併。 –

+0

哦,nevm ...我明白了!謝謝你,謝謝你,謝謝你。 Geez,這個網站是一個救生員... –

+0

僅供將來參考,availableTags被覆蓋。我會更新答案。 – Marek

1
var php_array = [<?php echo '"'.implode('","', $array).'"' ?>]; 
availableTags = $.merge(availableTags,php_array); 
1

您可以將PHP的陣列中的JSON文件和Java的腳本或jQuery的使用它。 使用php json_encode

0

我認爲最好的解決方案是使用json。

在PHP比輸出創建一個網頁,你需要一個JSON數據:

頁data.json

<?php 
    $obj['jsArray']= array('Boston, MA','New York City, NY','Los Angelos, CA'); 
    echo json_encode($obj); 
?> 

在HTML頁面中使用的getJSON從JSON數據加載頁面(我用僞代碼未測試):

$.getJSON("data.json", function(data) { 
    var availableTags = data.jsArray 
}); 

,或者如果你有availableTags,將增加新的數據:

$.getJSON("data.json", function(data) { 
    availableTags.push(data.jsArray) 
});