2017-10-15 157 views
-1

即時通訊嘗試從我的.php文件使用eval()函數轉換json字符串,但它不起作用。瀏覽器控制檯說 SyntaxError:預期的表達式,得到了'<'...eval()函數不工作

但是當我註釋掉eval()的行並且使用document.write(data);出現串...

這裏是我的代碼..

<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文件的代碼...使用

<?php 

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

    $myMsg = json_encode($msg); 

    echo $myMsg; 

?> 

IM最新版本的jQuery的..

+0

不要做eval。有很多更好的方法可以像JSON那樣獲取數據。設置正確的內容類型(或使用'$ .getJSON') – apokryfos

+0

您的腳本有效。你確定你是從web服務器加載而不是'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