2010-04-22 63 views
0

我在PHP和JavaScript之間傳遞了很多數據。我在php中使用JSON和json_encode,但這裏的問題是我傳遞了很多數字作爲字符串存儲 - 例如數字1.2345。PHP <-> JavaScript通信:我堅持使用ASCII碼嗎?

有沒有辦法將數據直接作爲數字(浮點數,整數)傳遞,而不必將其轉換爲ASCII然後返回?

謝謝,

+2

?我不明白這個問題。 Javascript沒有類型,所以你怎麼能像float,整數等那樣傳遞變量? – echox 2010-04-22 22:25:49

+3

@echox - OP問他是否可以直接傳送一個'Number'。當然這是不可能的,即使JSON格式也是一個字符串。 – Matt 2010-04-22 22:29:29

+0

thx爲您清理 – echox 2010-04-23 09:26:59

回答

5

號碼HTTP是一個字節流協議(*);任何下降的東西都必須打包成字節。如果您願意,您當然可以使用更緊湊的值的二進制值表示形式,但是對於您的PHP進行編碼和您的JS進行解碼將會有更多工作。

無論如何,對於小數字的常見情況,文本表示通常非常有效。你的例子1.2345實際上比一個雙精度浮點數(8字節)小一個字符串(6個字節)。

JSON的發明正是爲了允許通過HTTP連接傳輸非字符串類型。它像你將要得到的那樣無縫。是否有任何理由關心在PHP float和JavaScript Number之間有一個serialise-> string-> parse步驟?因爲JS沒有字節數據類型,通過設置JSON響應的字符集爲iso-8859-1,你可以使它像純字節一樣工作,但默認的utf-8通常是更多的合適)。

3

如果您不想使用JSON,還有其他編碼選項。從HTTP請求返回的數據是一個octect流(不是7位乾淨的ASCII流 - 如果是這樣,將無法將服務器編碼的UTF-8文檔或二進制文件作爲簡單計數器示例)。一些二進制序列化/數據協議是ASN.1,Thrift,Google Protocol Buffers,Avro,或者當然還有一些自定義格式。 JSON的優點是「統一的人類可讀性簡單」。

但最後--JSON是JSON。

或許對某人感興趣:JavaScript Protocol Buffer Implementation

+0

作爲JSON的JSON是我最喜歡的JSON! – bobince 2010-04-23 00:02:01

相關問題