2010-04-20 80 views
3

目前我使用下面的代码从MySQL获取我的JSON输出。如何更改JSON输出格式以及如何支持汉字?

<?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输出支持中文字符?

感谢您的帮助和阅读!

+0

第一种格式和第二种格式没有明显的联系,数据完全不同。此外,标题询问有关汉字,但问题不是。请再次检查您的事实并清除问题。 – deceze 2010-04-20 05:21:31

+0

是的,它的确如此......他展示了如何在汉字显示时将汉字翻译成“~~”和“????”。 – 2010-04-20 05:22:46

+0

为什么你想用JavaScript而不是用PHP来填充你的模板?你不需要这个,因为你在服务器上使用生成(我想从示例代码中)。 – retro 2010-04-20 05:24:21

回答

0

最佳猜测你的问题:

如何改变这种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,所以它与中国文字没有问题。将它们打包为JSON时,请确保您的字符采用UTF8编码。

+0

如果我不应该以这种方式使用JSON格式化数据。任何想法我应该用什么? >。< – sky 2010-04-20 06:04:35

+0

@sky已更新的答案。我恳求你以一种理智的方式使用JSON。 – deceze 2010-04-20 06:10:20

0

我不禁建议您使用更优雅的解决方案?你有没有想过使用Ajax?