2013-07-24 96 views
-1

这是我的javascript函数。

<script> 
    function output($file_name, $content) 
    { 
    document.getElementById("content_title").innerHTML=" "+$file_name; 
    document.getElementById("content").innerHTML=" "+$content; 
    } 
</script> 

这是我的PHP代码;

<?php 
$dir = "img_png"; 
$files = scandir($dir); 
$dir_length = count($files); 
?> 

这是我的PHP代码的第二部分(有问题);问题:何时$ content =“任何字符串”;一切正常,但当$ content = file_get_contents('file');我的触发函数根本不会改变任何.innerHTML元素。

<?php 
for ($i=2;$i<$dir_length;$i++){ 
$title=explode(".png", $files[$i]); 
$content=file_get_contents('./content_txt/tv.txt'); 
echo "<td><button id='button' class='button' onClick=\"output('", $title[0],""; 
echo "', '", $content,""; 
echo "')\"><img src=\"/img_png/", $files[$i], "\"></img></button></td>"; 
} 
?> 
+2

你确定文件路径是否正确?检查file_get_contents是否不返回false。 – roptch

+0

as dreamstate说:check path - 你可以使用[getcwd()](http://php.net/manual/en/function.getcwd.php)来检查'当前工作目录' – furas

+0

如果我回显$ content;任何地方,我都可以在我的网上获得文件内容。所以路径是正确的。 – helpmepls

回答

0

开始解决您的问题与此(用点代替逗号连接字符串)

<?php 
for ($i=2;$i<$dir_length;$i++){ 
    $title=explode(".png", $files[$i]); 
    $content=file_get_contents('./content_txt/tv.txt'); 
    echo "<td><button id='button' class='button' onClick=\"output('" . $title[0]; 
    echo "', '" . $content; 
    echo "')\"><img src=\"/img_png/" . $files[$i] . "\"></img></button></td>"; 
} 
?> 

另外我想设置$content-variable外循环并跳过结束标记(它没有任何因为</img>差异不使用):

从PHP发送(用urlencode)

时也编码数据10

在JavaScript中,你必须对内容进行解码:

function output($file_name, $content) 
{ 
    $content = decodeURI($content); 
    document.getElementById("content_title").innerHTML=" "+$file_name; 
    document.getElementById("content").innerHTML=" "+$content; 
} 
+0

这是连接的更好方法,但这仍然无助于解决我的问题。 – helpmepls

+0

@helpmepls - 你必须编码和解码你的信息。(在你的情况下,因为文件包含“)不管现在的数据是什么,总是一个很好的做法。它可能会改变,然后你的代码可能无法正常工作。查看更新的答案。我的猜测是你的javascript函数甚至在使用get_contents时都没有执行,这是正确的吗? – bestprogrammerintheworld

+0

谢谢,它的工作原理!我无法自己想象出来 – helpmepls

0

你的文件内容可以包含换行符或特殊字符需要在JS逃脱,你将需要字符串传递给JavaScript函数之前转义特殊字符。

+0

tv.txt文件包含== >>“tvvvvvv”; – helpmepls

0

"tvvvvvv";

我想你复制粘贴的PHP字符串tv.txt

删除"; - 你不需要它在文件中。

"是你在javascript中的问题。

+0

这是解决它的一种方式,但它不会是“面向未来的”。如果某人在“tv.txt中添加了”点? – bestprogrammerintheworld

+0

你说得对。我认为SO(作为初学者)从PHP复制字符串到'''和';'文件 - 所以这只是答案,为什么字符串直接分配给变量工作正常,但字符串从文件中收回不。许多。 – furas