在下拉列表中使用JS-id可以从文本文件中使用,但不能从php变量字符串中使用



我使用的是一个带有下拉列表的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感到困惑,一旦我看穿了这一点,它就非常直接了。

最新更新