1

PHPを使用してJavaScriptドキュメントを作成しています。それは2つのことをします:

  1. テンプレートとして使用するいくつかのHTMLファイルを含むディレクトリを読み取り、ファイル名:コンテンツを表すキー:値のペアを含むオブジェクトを出力します。これは次のようになります。

    var HTML = {
        "blogpost.html": '<div>{post}</div>',
        "comment.html" : '<div class="comment">{comment}</div>'
    };
    

    これによりHTML["template.html"]、AJAXリクエストから受け取ったテンプレートデータを追加するために使用できます。

  2. JavaScriptファイルを含むディレクトリを読み取り、それらのコンテンツをドキュメントに直接出力します。

ローカルでは正常に動作していますが、一度アップロードしてみると、このエラーが発生します。

Uncaught SyntaxError: Unexpected token ILLEGAL

HTMLファイルとJSファイルのそれぞれから取得した出力を次のようにラップしてみました。

preg_replace('/\s{2,}/', '', $output);
addslashes($output);
mysql_real_escape_string($output);

そしてそれらの組み合わせですが、それでも同じエラーです。

出力に配置しようとしているHTMLとJavaScriptを確実に出力するにはどうすればよいですか?

これが私が使用している現在のPHPスクリプト全体です(これはローカルでは機能しますが、オンラインでは奇妙に機能しません):

header("Content-type: application/x-javascript");


// Write HTML templates.
$dir = dir($_SERVER['DOCUMENT_ROOT'] . '/view/html/');
$files = array();

while($file = $dir->read())
{
    if(strpos($file, ".html"))
    {
        $key = substr($file, 0, strpos($file, ".html"));
        array_push($files, '"' . $key . '": \'' . compress(file_get_contents($dir->path . $file)) . "'");
    }
}

echo 'var HTML = {' . implode(",", $files) . '};';




// Output other JavaScript files.
$js = array();

array_push($js, file_get_contents("plugin/jquery.js"));
array_push($js, file_get_contents("plugin/imagesloaded.js"));
array_push($js, file_get_contents("plugin/masonry.js"));
array_push($js, file_get_contents("base/master.js"));
array_push($js, file_get_contents("plugin/ga.js"));

echo implode("", $js);


// Compress a JavaScript file.
function compress($str)
{
    return addslashes(preg_replace('/\s{2,}/', '', $str));
}
4

4 に答える 4

2

json_encode()任意の PHP -> JS 変換に使用できます。

while ($file = $dir->read()) {
    if(strpos($file, ".html")) {
        $key = substr($file, 0, strpos($file, ".html"));
        $files[$key] = compress(file_get_contents($dir->path . $file));
    }
}

echo 'var HTML = ' . json_encode($files) .';';
于 2012-09-25T06:25:32.323 に答える
1

これはパーサー エラーであるため、コードが実行される前に問題が発生します。

使用している 2 つのランタイムの PHP バージョンを確認することをお勧めします。デプロイ先と同じランタイムで開発およびテストすることが理想的です。

于 2012-09-25T06:22:49.910 に答える
0

これは私にも以前に起こりました。

Github などの Web サイトに投稿したコードの一部をコピーしたか、エディターが編集した可能性があります。

このような文書には、目に見えない文字が潜んでいることが知られています。

このエラーを修正するには、メモ帳 (Windows) や TextEdit (Mac) などの完全なプレーンテキスト エディターで、エラーのあるコード行、その上の行、およびその下の行を入力します。入力後、Ctrl-AまたはCmd-A(すべて選択) を使用してコピーし、通常のコード エディターでコードを置き換えます。

エラーを修正する必要があります。

于 2012-09-25T06:47:54.657 に答える