2010-04-20 6 views
3

Actuellement j'utilise le code suivant pour obtenir ma sortie JSON de MySQL.Comment changer le format de sortie JSON et comment prendre en charge le caractère chinois?

<?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> 

Et la sortie est:

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

Voici la question, comment puis-je modifier ma sortie en format comme:

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

Ce que je vais utiliser plus tard avec la suite code:

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> 
'; 

Aussi comment mon json support de sortie caractère chinois?

Merci d'avoir aidé et lu!

+0

Le premier format et le deuxième format n'ont aucune connexion évidente, les données sont complètement différentes. En outre, le titre pose des questions sur les caractères chinois, mais pas la question. Veuillez vérifier à nouveau vos faits et clarifier la question. – deceze

+0

Oui, il le fait ... Il montre comment les caractères chinois sont traduits en '~~' et '????' quand ils devraient être affichés en chinois. –

+0

Pourquoi vous voulez remplir votre modèle avec JavaScript plutôt qu'avec PHP? Vous n'avez pas besoin de cela, parce que vous utilisez la génération sur le serveur (je suppose de l'exemple de code). – retro

Répondre

0

Meilleur deviner votre question:

Comment changer ce format JSON:

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

Pour ce format:

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

La réponse est la suivante: Vous ne devriez pas. JSON est un bon format de données à utiliser, et il est autonome. Si vous modifiez ce qui serait normalement les clés d'un objet JSON en variables, vous faites en sorte que votre "format de données" dépende de l'endroit où il sera utilisé. Les conflits de noms de variables sont presque garantis. Il n'y a également aucun avantage, les données dans les objets JSON sont déjà triviales.

Mise à jour: Vous pouvez facilement construire ce format en boucle à travers vos résultats, de les mettre en tableaux et imprimer le code Javascript, il est pas difficile. Malgré cela, je ne vais pas afficher le code ici, car c'est une pratique terrible. Au lieu de cela, tout ce que vous devez faire est de changer légèrement le code qui utilisera ces données:

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

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

En ce qui concerne les caractères chinois, Javascript/JSON est intrinsèquement UTF8, il n'a aucun problème avec les caractères chinois. Assurez-vous simplement que vos caractères sont codés en UTF8 lorsque vous les empaquetez en JSON.

+0

Si je ne devrais pas utiliser JSON pour formater les données de cette façon. Une idée de ce que je devrais utiliser? >. < – sky

+0

@sky Réponse mise à jour. Je vous implore d'utiliser JSON d'une manière saine. – deceze

0

Je ne peux pas m'empêcher de suggérer que vous utilisez une solution plus élégante? Avez-vous pensé à utiliser ajax?

Questions connexes