Как изменить формат вывода JSON и как поддерживать китайский символ? - PullRequest
3 голосов
/ 20 апреля 2010

В настоящее время я использую следующий код для получения вывода JSON из MySQL.

<?php


$session = mysql_connect('localhost','name','pass'); 

mysql_select_db('dbname', $session); 


    $result= mysql_query('SELECT message FROM posts', $session); 
 $somethings = array();  
 while ($row = mysql_fetch_assoc($result)) {  
    $somethings[] = $row; 
 } 

?> 

<script type="text/javascript"> 
    var somethings= <?php echo json_encode($somethings); ?>; 
</script> 

И вывод:

<script type="text/javascript"> 
    var somethings= [{"message":"Welcome to Yo~ :)"},{"message":"Try iPhone post!"},{"message":"????" (the ???? meant to be chinese character)}]; 
</script>

Вот вопрос, как я могу преобразовать свой вывод в формат как:

<script type="text/javascript"> 
userAge = new Array('21','36','20'),
userMid = new Array('liuple','anhu','jacksen');
</script>

Который я буду использовать позже со следующим кодом:

 var html = '
<table class="map-overlay">
  <tr>
    <td class="user">' +
      '<a class="username" href="/' + **userMid[index]** + '" target="_blank"><img alt="" src="' +
        getAvatar(signImgList[index], '72x72') +
        '"></a><br>
      <a class="username" href="/' + **userMid[index]** + '" target="_blank">' +
      userNameList[index] +
      '</a><br>
      <span class="info">' + **userSex[index]** + ' ' + **userAge[index]** + '岁<br>
      ' +
      cityList[index] +
      '</span>' +
      '</td>
    <td class="content">' + picString
      + somethings[index] + '<br>
      <span class="time">' +
      timeList[index] + picTips +
      '</span></td>
  </tr>
</table>
'; 

Также, как мой вывод json поддерживает китайский символ?

Спасибо за помощь и чтение!

Ответы [ 2 ]

0 голосов
/ 20 апреля 2010

Не могу не предложить вам использовать более элегантное решение? Думали ли вы об использовании ajax?

0 голосов
/ 20 апреля 2010

Лучше всего угадать ваш вопрос:

Как изменить этот формат JSON:

[{ key : "Value", key2 : "Value2" }, { key : "Another Value", key2 : "Another Value2" }]

На этот формат:

var Keys = ["Value", "Another Value"];
var Key2s = ["Value2", "Another Value2"];

Ответ: Вы не должныт.JSON - это хороший формат данных для работы, и он самодостаточен.Если вы измените то, что обычно является ключами объекта JSON, на переменные, вы сделаете свой «формат данных» чрезвычайно зависимым от того, где он будет использоваться.Конфликты имен переменных почти гарантированы.Преимущества также нет, данные в объектах JSON тривиальны для доступа.

Обновление: Вы можете легко построить этот формат, просматривая результаты, помещая их в массивы и распечатывая код Javascript., это не сложно.Несмотря на это, я не собираюсь публиковать здесь код, так как это ужасная практика.Вместо этого все, что вам нужно сделать, это немного изменить код, который будет использовать эти данные:

// old
var html = '...' + key[index] + '...' +key2[index] + '...';

// new
var html = '...' + data[index].key + '...' + data[index].key2 + '...';

Что касается китайских символов, то Javascript / JSON по своей природе является UTF8, поэтому у него нет проблем с китайскими символами.Просто убедитесь, что ваши символы закодированы в UTF8, когда вы упаковываете их в JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...