2012-01-02 22 views
2

このエラーが発生しましたUncaught SyntaxError:予期しないトークン<がクロムから届きましたが、FireFoxですべて正常に動作します。 私は多くの同様の投稿を見つけましたが、解決策はありません。Chromeで:Uncaught SyntaxError:予期しないトークン<

私はそれが独自のヘッダーで、それがビルドされた後、ブラウザに2番目のページを送信する方法があるかと思います。 このアイデアは、Chromeがhtmlの終了タグの後に、Firefoxが、終了タグの前に配置するのとは対照的に、以下の関数にエコーしているのを見たときに来ました。

基本的に、私はこの順序で送りたい:

header('Content-Type: text/html; charset= utf-8'); 
<html></html> 

header('Content-Type: text/javascript; charset= utf-8'); 
<script></script> 

これは私のPHPスクリプトですが、私はヘッダコードのコメントを解除し、HTMLページから独立してそれを送信したいと思います。

public static function jsShow($html) 
{ 
    //header('Content-Type: text/javascript; charset= utf-8'); 
    echo " 
     <script type=\"text/javascript\"> 
     var e = document.getElementById('message'); 
     e.innerHTML = $html ; 
     e.style.display = 'block'; 
     </script>"; 
} 

このページはFirefoxでのように見え、これはどのような作品です:

</body> 
</html> 

<script type="text/javascript"> 
var e = document.getElementById('message'); 
e.innerHTML = <ul style="list-style: none; margin: 0; padding: 0;"> 
<li style="background-color: #0000FF; margin: 0;"><img src="/asset/icon/info.gif" alt="Info: " /> working</li> 
<li style="background-color: #008000; margin: 0;"><img src="/asset/icon/success.gif" alt="Success: " /> Got it</li> 
</ul> 
; 
e.style.display = 'block'; 

</script> 

は私が&はob_end_flush())(私は多分のob_start使用することができると考えていますが、ヘッダを制御することはできませんそれだけの内容で

答えて

2

...

 e.innerHTML = " . json_encode($html) . " ; 
+0

私はこれがうまくいくとは思っていませんでしたが、私はそれがなぜ起こりません、私は絶望からそれを試しました。そしてYAHOOO – RoboTamer

+0

すべてのJSON値が有効なJavaScriptリテラルであるという事実を利用します。 –

2

エラー「キャッチされないでSyntaxError:予期しないトークン<は」それが無効のJavaScriptで、すべてのブラウザで失敗する必要があるので、あなたは2番目のコードブロックに表示されている何のために適切なエラーです。

e.innerHTML = <ul style="list-style: none; margin: 0; padding: 0;"> 
<li style="background-color: #0000FF; margin: 0;"><img src="/asset/icon/info.gif" alt="Info: " /> working</li> 
<li style="background-color: #008000; margin: 0;"><img src="/asset/icon/success.gif" alt="Success: " /> Got it</li> 
</ul> 
; 

は「=」の後に「<」右を参照してください:あなたは引用符で囲まれていない文字列に等しいe.innerHTMLを割り当てていますか?それは予期しないトークンです。

あなたはその文字列内に一重引用符を使用しているようには見えないので、一番簡単な解決法は一重引用符で囲むことです。私はPHPを知らないが、このような何か:

echo " 
    <script type=\"text/javascript\"> 
    var e = document.getElementById('message'); 
    e.innerHTML = '" . $html . "'; 
    e.style.display = 'block'; 
    </script>"; 

または何がPHPの構文は、この結果がブラウザに返さ取得することです:

e.innerHTML = '<ul style="list-style ... </ul>'; 

ところで、それはなりません。同じ応答に対して2つの異なるヘッダーを設定することができます。あなたが戻ってきたのは、htmlの1ページです。このページには、一番下にスクリプトブロックがあります。 "text/javascript"コンテンツタイプは、リンクされたJSファイルのほうが多く、html(スクリプトタグなし)、JSのみを含んでいません。

+0

引用も私の最初の考えでした。しかし私が引用すると、それは私に違うエラーを与え、Firefoxでもうまく動作しなくなります。 PHP変数からjs varにすべて転送されるので、引用符を付ける必要はありません。とにかくここに私が引用したときに得られるものがあります: – RoboTamer

+0

RoboTamer

+0

引用符を付ける必要があります。または、ブラウザに表示される内容(つまり、ソースの表示内容)に引用符が付いていることを確認する必要があります。 PHP変数からJS変数に直接移すことはできません。PHPはサーバー上で実行され、ブラウザが受け取るページソースの一部であるテキストを出力します。あなたの受け入れられたソリューションからソースを見る – nnnnnn

関連する問題