2011-07-27 21 views
0

我有五個數字的美國郵政編碼從數據庫中出來。當JavaScript看到它們時,它將它們視爲一個數字,並忽略前導零。JavaScript - 郵編被轉換爲數字

如何讓JavaScript將數字視爲字符串以便它們正確顯示?

+4

字符串是字符串,直到您編寫代碼將其轉換爲數字。認真。 –

+2

_當JavaScript看到他們時:如何?你必須告訴我們你是如何「將數據從數據庫發送到javascript」 – Nivas

+2

只需在郵政編碼後面加'+'''.. – toopay

回答

4

引用他們。

在JavaScript和JSON 05123是一個八進制數等於2643(感謝@Marc B)和"05123"是僅包含數字字符的字符串。

當然,不要在數據庫中引用它們。您需要用正在從數據庫中讀取信息並將其傳遞到客戶端代碼的服務器端代碼生成的JavaScript或JSON引用它們。通常情況下,這是由於鑄造郵政編碼爲字符串一樣簡單(或者,因爲是更可能的情況下,鑄造你的數字拉鍊爲數字。)

+2

其實,沒有。 05123是一個八進制數,相當於2643十進制數。在某個時候嘗試'alert(05123)'。 –

+0

@Marc乙 - 嘗試和注意。感謝您的提醒! –

+0

是的,這是正確的答案。非常感謝!!! –

1

我敢肯定,String()可能會工作。如果那個時候,0已經砍掉,你可以這樣做:

zip = <Source>; 
zip = String(zip); 
while(zip.length<5){ 
    zip = "0" + zip; 
} 

告訴我,這是不是你要找的東西。

3

這裏有一個填充數字的函數,直到它有5個字符長。

function formatzip(num) { 
    var s = "00000"+num; 
    return s.substr(s.length-5); 
} 

但真正的郵政編碼應該永遠不會變成一個數字在第一位。它應該是一個字符串,當您設置它的值開始。

+0

不錯,這是一個比我的更清潔,真正整潔:) – Vap0r

+1

雖然這是一個非常優雅的片段,它解決了一個不應該存在的問題。 –

+0

我實際上已將此解決方案集成到數據庫中,以確保數據庫中的任何內容都是五位數。是的,這解決了一個可能不存在的問題,但它是解決方案的一個很好的部分。謝謝! –

1

猜測......某些天才決定在數據庫中存儲數字列類型的郵政編碼(NUMBERINT或任何類型的數據庫管理系統實現)。如果是這種情況,那麼以零開頭的所有ZIP代碼都已損壞。

最好在太遲之前將列切換到VARCHAR,然後手動修復損壞的行。