【问题标题】:identifier starts immediately after numeric literal in javascript array标识符在javascript数组中的数字文字之后立即开始
【发布时间】:2012-01-11 04:37:15
【问题描述】:

我正在尝试将图像文件名的 php 数组分配给 javascript 数组。到目前为止,这是我得到的:

<script src="jq.js"></script>

<?php
$dir  = 'images';
$images = scandir($dir);
$true_images = array();
foreach($images as $k=>$v){
    if(is_file('images/'.$v)){
        $true_images[] = $v;
    }
}

?>
<script>
$(function(){
        var image_array = Array(<?php echo implode(',', $true_images); ?>);
        alert(image_array);
});
</script>

但我在 firebug 中收到以下错误: 标识符在数字文字之后立即开始

请帮忙,提前谢谢

【问题讨论】:

  • 因为您的问题是 JavaScript 问题,请改为发布您的 PHP 脚本的输出。我有一种感觉,您可能只需查看输出(您应该在发布之前完成)就知道您的问题是什么
  • 另外,输出JavaScript数据的正确方式是&lt;?php echo htmlspecialchars(json_encode($data)); ?&gt;,这样可以避免很多问题和安全隐患。
  • @MattiVirkkunen:输出如下:1.jpg,2.jpg,5.jpg,6.jpg,7.jpg,8.jpg,9.jpg。
  • @Kyouka Suigetsu:你没看出有什么问题吗?

标签: php javascript jquery arrays


【解决方案1】:

您必须将您的字符串数组输入到 "" 或 '' 试试这个

var image_array = ["<?php echo implode('","', $true_images); ?>"]

【讨论】:

    【解决方案2】:

    如果您在浏览器中查看源代码并阅读您实际发送的 JavaScript,问题可能会很明显。 “标识符在数字文字之后立即开始”表明您有类似 3m3.m 的内容(其中 33. 是数字文字,m 是标识符)。在我看来,最可能的问题是$true_images 中的(某些)值类似于3.jpg。在将它们发送到浏览器之前,您需要将文件名包含在引号中,生成类似 "3.jpg" 的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多