我有以下代码,但它不起作用。我正在尝试创建脚本输出:
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';
答案 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中处理这个问题。这可能最终表现得非常糟糕,并且会占用更多带宽。