php在foreach循环中创建javascript

时间:2015-03-05 01:52:21

标签: javascript php

我有以下代码,但它不起作用。我正在尝试创建脚本输出:

echo "<script type=\"text/javascript\"><!--\n";
echo "SLIDES = new slideshow(\"SLIDES\")\n";

  // Now loop through the files, echoing out a new select option for each one
  foreach( $files as $fname ) {
    echo 's = new slide()\n';
    echo 's.src =  \"http://cashbackflorida.com/wpradmin/modules/wprrets/photos/'.$result ->MLS.'/'{$fname}\n\"';
    echo 's.width = \"560\"\n';
    echo 's.height = \"420\"\n';
    echo 's.alt = \"{$fname}\"\n';
    echo 's.text = unescape(\"\")\n';
    echo 's.link = \"\"\n';
    echo 's.target = \"\"\n';
    echo 's.attr = \"\"\n';
    echo 's.filter = \"\"\n';
    echo 'SLIDES.add_slide(s)\n';
  }

  echo '--></script>\n';

2 个答案:

答案 0 :(得分:2)

不要这样做。只需将数组输出到JavaScript并在那里处理它。

var files = <?php echo json_encode($files); ?>;

答案 1 :(得分:0)

您将在字符串转义中找到问题

echo 's.height = \"420\"\n';

你不能在单引号字符串中逃避。所以试试这个

echo "s.height = \"420\"\n";

您不需要在双引号内转义单引号,反之亦然,但您只能在双引号字符串中获取类似的换行符。 我会建议HEREDOC进行这种字符串写作。

$fnamej = json_encode($fname);
echo << EOT
s.height = "420";
s.alt = $fnamej;
EOT;

我也倾向于说你最好在javascript中处理这个问题。这可能最终表现得非常糟糕,并且会占用更多带宽。