2016-05-04 19 views
0

私の次のコードは、スクリプト変数に配列の値を入れたときにphpなしでうまく動作します。しかし、PHPでconsole.log Uncaught SyntaxError: Unexpected identifier。私の間違いを見つけるのを助けてください。Uncaught SyntaxError:PHPで予期しない識別子

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> 
    <script src="//code.jquery.com/jquery-1.10.2.js"></script> 
    <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 
<?php 
    $availableName = array("ActionScript","AppleScript","Asp","BASIC","C","C++","Clojure","COBOL","ColdFusion","Erlang","Fortran","Groovy","Haskell"); 
    $availableName = json_encode($availableName); 
    echo "<script type=\"text/javascript\">"; 
    echo " $(function() {"; 
    echo " var allTags =" . $availableName; 
    echo " $(\"#tags\").autocomplete({"; 
    echo "  source: allTags"; 
    echo " }); }); </script>"; 
    ?> 
</head> 
<body> 
<div class="ui-widget"> 
    <label for="tags">Tags: </label> 
    <input id="tags"> 
</div> 
</body> 
</html> 
+0

PHPはサーバーサイドの言語です。ブラウザJavaScriptはクライアント側のJavaScriptです。彼らは全く交信しません。 JavaScript構文エラーがある場合は、少なくとも* View Source *を見て、JavaScriptコードがどのように見えるかを確認する必要があります。 –

+0

\ "text/javascript \"これが問題です。代わりに単一のcuotesと置き換えてscaperingとそれは動作します – yBrodsky

答えて

1

私は、あなたがエラーを得たことがあるため、変数としてそれを読み込みます。この$(function()$(\"#tags\")

のPHP起こると思います。

例:それを修正するために

$abc = "test"; 
echo "$abc123"; //test123 

、単一引用符と二重引用符"からの変更'

1

$が、この場合には害を与えてはなりません。私はあなたが正しい場合は、ブラウザで出力を実行するときに問題が表示されます(PHPエラーではなくJavaScriptエラー)。あなたが最後にセミコロンを追加するために必要とされるようにするには、すべて1行でJavaScriptを入れている

代わりの

echo " var allTags =" . $availableName; 

これを試してみてください(「ハスケルは」]の後):

echo " var allTags =" . $availableName . ";"; 
+0

素晴らしい...ここに問題があった....解決済み....非常にありがとう... –

0

これは、引用符の多くが不適切にエスケープされていると考えられます。あるいは、私はおそらく以下のようにコード化します。これは、コンパクトで読みやすく簡潔に見えるという付加的な利点を提供するJavaScriptからJavaScriptへの翻訳の混乱を削減します。

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> 
<script src="//code.jquery.com/jquery-1.10.2.js"></script> 
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 
<script type="text/javascript"> 
    $(function() { 
     var allTags = <?php echo json_encode(array("ActionScript","AppleScript","Asp","BASIC","C","C++","Clojure","COBOL","ColdFusion","Erlang","Fortran","Groovy","Haskell")); ?>; 
     $("#tags").autocomplete({'source': allTags}); 
    }); 
</script> 

また、私はautocompleteオプションオブジェクト内のオブジェクトキーの周りに引用符を置いていることに気づくでしょう。これは、新しいブラウザでは昔ながらの方法かもしれません。しかし、古いブラウザではjsonオブジェクトを適切に解析するためにオブジェクトキーを引用する必要がありました。変数を持つキーをすばやく見て混乱させるのを避けることができるので、これはまだ優れた方法です。

+0

私はこれをPHPFiddleでテストしたところ、何のエラーもなく動作するようです。 – sadmicrowave

関連する問題