2017-03-14 31 views
0

我正在嘗試爲我的json創建一個詞雲。我已經提到這個頁面上的使用jQcloud http://mistic100.github.io/jQCloud/demo.html使用jQcloud的詞雲不會出現

起初做詞雲根本沒有什麼錯誤,但現在有控制檯說,它不能在字符串創建財產「權重」'上的錯誤{text:「mark」,weight:8}'。我仍然是一個新手。如果有人能指出這個錯誤,那將會很棒。編碼在我的process.php文件中。

if(isset($_POST['submit'])){ 
    $data = $_POST["d2"]; 
    $obj = json_decode($data, TRUE); 

    $item = array(); 
    foreach($obj as $key => $value) 
    { 
     $item[] = '{text: "'.$key.'", weight: '.$value.'}'; 

     $sql = "SELECT word FROM test WHERE word = '$key'"; 
     $r = mysql_query($sql) or die("Error: " . mysql_error()); 
     $row0 = mysql_num_rows($r); 

     if($row0 != 0) 
     { 
      $found = "UPDATE test SET weight = $value WHERE word = '$key'"; 
      mysql_query($found) or die ("Error: " . mysql_error()); 
     } 
    } 
    echo print_r($item); 
}?> 

<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"></script> 
<link rel="stylesheet" type="text/css" href="jqcloud.css" /> 
<script type="text/javascript" src="jqcloud-1.0.4.js"></script> 
<script type="text/javascript"> 

var varNameSpace = <?php echo json_encode($item); ?>; 
varNameSpace = JSON.parse(JSON.stringify(varNameSpace)); 
alert(varNameSpace); 
$(function() { 
    $("#d").jQCloud(varNameSpace); 
    }); 

</head> 
<body> 
<div id="d" style="width: 550px; height: 350px; border: 1px solid #ccc;"></div> 
</body> 
</html> 

當我提醒varNameSpace,該例子的結果會是這樣:

{text: "mark", weight: 8}, 
{text: "zuckerberg", weight: 4}, 
{text: "money", weight: 2}, 
{text: "man", weight: 2}, 
{text: "and", weight: 7}, 
{text: "having", weight: 1}, 
{text: "apart", weight: 8}, 
{text: "rich", weight: 2}, 
{text: "of", weight: 3}, 
{text: "world", weight: 2}, 
{text: "less", weight: 1} 

這是回聲json_encode($項目)的輸出的例子在控制檯上:

["{text: \"mark\", size: 8}", 
"{text: \"apart\", size: 8}", 
"{text: \"and\", size: 7}", 
"{text: \"zuckerberg\", size: 4}" ...and many more]; 

當我回顯$ item使用的print_r,這是輸出示例:

Array ([0] => {text: "mark", size: 8} [1] 
=> {text: "apart", weight: 8} [2] 
=> {text: "and", weight: 7} [3] 
=> {text: "zuckerberg", size: 4} ...and many more) 1 

回答

0

你輸出一個普通的JSON格式的字符串到您的變數。用JSON.parse()將它轉換爲對象:

var varNameSpace = <?php echo json_encode($item); ?>; 
varNameSpace = JSON.parse(varNameSpace); 
+0

我編輯了我的代碼。我做了你要求我做的事情,並且出現錯誤Uncaught SyntaxError:JSON中位置1的JSON.parse()中的意外標記t。我通過添加JSON.stringify來解決它,但現在又出現了另一個錯誤。它表示Uncaught TypeError:不能在字符串'{text:'mark',weight:8}'上創建屬性'weight'。 – Radclive

+0

你的'$ item' php變量裏面有什麼? –

+0

起初,我得到了js文件一個JSON數據,我做了字數計數器,我得到了這樣的事情: { 「標誌」:8, 「扎克伯格」:4, ...等等更多.. } 然後將json數據傳遞給php文件,並通過它循環添加單詞**文本**和**重量**,因此,示例結果就像這樣在控制檯上(這是在裏面我將它傳遞給** var varNameSpace **)的'$ items': [「{text:\」mark \「,weight:8}」, 「{text:\」zuckerberg \「,weight: 4}「, 」{text:\「man \」,weight:2}, 還有更多......「]; – Radclive