2014-05-13 98 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) 
});