2013-07-24 149 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