2010-04-20 58 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?