2017-10-15 23 views
-1

私はeval()関数を使用して私の.phpファイルからjson文字列を変換しようとしていますが、それは動作しません。ブラウザコンソールに という構文があります。SyntaxError:予期した式が '<' ...eval()関数が動作しません

ですが、eval()がある行をコメントアウトしてdocument.write(data);を使用してください。文字列が表示されます...ここ

<?php 

    $msg = array(
     "name"=>"hi there Victor!", 
     "date"=>"Monday 21st Feb 2010" 
    ); 

    $myMsg = json_encode($msg); 

    echo $myMsg; 

?> 

は...

<html> 
<head> 
    <script type='text/javascript' src='jquery.js'></script> 
    <script type='text/javascript'> 

    var go = function() { 

     $.get("testjson.php", function(data) { 

      var obj = eval("(" + data + ")"); 

      document.write(obj.name + "<br />"); 
      document.write(obj.date + "<br />"); 
     }); 
    } 
    </script> 
</head> 
<body> 
    <input type='button' value='go' onclick='go()' /> 
<body> 
</html> 

、ここでは私のtestjson.phpファイルのコードです。..私のコードのjQueryの最新バージョンを使用してイムです。..

+0

evalをしないでください。たとえばJSONのようなデータを取得する方がはるかに優れています。正しいコンテンツタイプを設定する(または '$ .getJSON'を使用) – apokryfos

+0

あなたのスクリプトは動作します。あなたはこれを 'file:///'ではなくウェブサーバーからロードしていますか? –

+0

質問を残したのですか、ここでコメントに返信できることに気づいていませんか? –

答えて

0

ここ$.getJSON()を使用しての代わりに、eval()、またはのパラメータとしてjsonの指定についてのコメントと回答内の他の提案があります。、これらはすべて良い提案です。しかし、それはこれが機能していない理由ではありません。

単純に、var go = ....関数定義にセミコロンがありません。

+0

randall ..私はあなたのコードを試してみました..しかしそれでも動作しませんでした... @nick私はすでにセミコロンを入れましたが、何も変わっていません.. – Vitas

+0

あなたがしようとしているコードは、あなたの質問に投稿されましたか?あなたが書いたコードを試して、セミコロンを追加しました。それは私の期待通りに機能します。 –

+0

セミコロンの有無にかかわらず、コードは正常に動作するので、 "<"(彼のPHPからの出力の破損のように聞こえる)についてのエラーが表示されます。 – IncredibleHat

0

コードが修正されました。なぜか分からないけど、私の.phpコードの下にあるコメント付きのHTMLコードを削除しました。それは単なるコメントです:/

+0

コメントhtmlコードはまだhtmlコードです。 '<! - ...たくさんのhtmlをここに... - >'などのHTMLコメントを使用していたと仮定します。これは、jsonが入って来て、 "これは何なの?"ベイル。 PHPのコメントの背後にhtmlがある場合、それは別の話です。 – IncredibleHat

関連する問題