Я пытаюсь создать облако слов для моего JSON. Я имел в виду эту страницу о том, как сделать облако слов с помощью jQcloud http://mistic100.github.io/jQCloud/demo.html
Сначала не было никаких ошибок, но теперь есть ошибка в консоли, говорящая о том, что она не может создать свойство ‘weight’ для строки ‘{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}
это пример вывода echo json_encode ($ item) на консоли:
["{text: \"mark\", size: 8}",
"{text: \"apart\", size: 8}",
"{text: \"and\", size: 7}",
"{text: \"zuckerberg\", size: 4}" ...and many more];
когда я повторяю $ пункт с помощью 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
Вы выводите обычную строку в формате JSON в вашу переменную. Оберните это JSON.parse()
преобразовать его в объект:
var varNameSpace = <?php echo json_encode($item); ?>;
varNameSpace = JSON.parse(varNameSpace);
Других решений пока нет …