我使用的是一个带有下拉列表的HHTML表单,该表单是通过id从JS脚本填充的。
<div class="ui-widget">
<input id="ctags" class="form-control col-md-8" autocomplete="off"
placeholder="Start typing Collection Town" name="colltown_name" required>
<input id="ctag" type="hidden" name="colltown">
</div>
创建id"的JS脚本;ctags";使用.txt文件如下
<script> //AUTOCOMPLETE FOR TOWNS - MOBILE FRIENDLY
(function() {
var towns = [<?php echo file_get_contents("file.txt")?>];
$("#ctags").autocomplete({
source: towns,
select: function( event, ui ) {
$("#ctags").val(ui.item.label);
$("#ctag").val(ui.item.value);
return false;
}
});
</script>
这个下拉列表填充并正常工作,但我希望每次都使用PHP SELECT语句来检索信息,并为城镇生成一个新的列表,因为信息确实会定期更改。我已经创建了PHP SELECT部分,它生成了一个PHP变量,它是一个字符串,与txt文件相同。我已通过console.log对此进行了检查。因此,获取SELECT语句返回的数组的PHP代码如下所示。我添加了str_replace,以确保字符串与txt文件相同,$towns_dropdown是SELECT语句返回的数组。
<?php
$netJSON = json_encode($towns_dropdown);
$net = str_replace("[","",$netJSON);
$net1 = str_replace("]","",$net);
?>
然后我更改我的JS以创建id";ctags";如下所示,使用PHP变量而不是txt文件。
<script> //AUTOCOMPLETE FOR TOWNS - MOBILE FRIENDLY
(function() {
var towns='<?php echo $net1; ?>';
$("#ctags").autocomplete({
source: towns,
select: function( event, ui ) {
$("#ctags").val(ui.item.label);
$("#ctag").val(ui.item.value);
return false;
}
});
</script>
如果我在console.log中读取结果,它会显示字符串,但下拉列表不会填充。如果我让PHP create从PHP变量创建一个新文件,然后在JS脚本中调用该文件(file.txt(,如下所示:-
<?php
$netJSON = json_encode($towns_dropdown);
$net = str_replace("[","",$netJSON);
$net1 = str_replace("]","",$net);
$file = 'file.txt';
$data = $net1;
file_put_contents($file, $data);
?>
它正确地填充下拉列表
因此JS调用新文件file.txt,它就可以工作了,就像填充下拉列表一样。
所以,总之,我似乎无法获得一个PHP变量(它是一个字符串(来填充下拉列表。。。。。。。
我设法使用PHP变量使其工作,如下所示:-
<?php
$towns_list = json_encode($towns_dropdown);
?>
和JS脚本行:-
var towns=<?php echo $towns_list; ?>;
@CBroe,你是对的,我对JSON的shennanigans感到困惑,一旦我看穿了这一点,它就非常直接了。