2013-01-01 67 views
3

有什麼方法可以檢查響應大小嗎? Data屬性是我用來顯示圖像的一個字節數組。如果大小大於10 MB,我需要顯示一個彈出窗口。如何檢查JSON響應的大小?

{ 
    "Name": "sharon", 
    "Date": "07\/14\/2004", 
    "Data": "JVBERi0xLjINCg0KNC", 
    "DocumentId":1540, 
} 

另外我該如何檢查我的響應類型,無論是blob還是其他?我可以檢查我得到的blob的大小嗎?也許是這樣的:

var data = JSON.parse(this.responseData); 
+0

您可以使用'Data'屬性的'.length'屬性。如果它大於1024^2,則顯示彈出窗口。 – miku

+0

你的意思是這樣.... this.responseData.length或this.responseData.data.length – Kevin

+0

Kevin:'this.responseData.data.length' – miku

回答

1

你只可以使用JavaScript .length這一點,但一定要明白不同的瀏覽器以及服務器將報告不同的值,因爲新行的一些解釋可以是1 2的大小值(字節順序)。

話雖如此,使用一個「鬆散」的值,你肯定包含你需要的數據,而不僅僅是沒有價值的頭響應。

+0

查看AJAX響應的HTTP頭不是更好嗎? (當然,假設它在那裏) – Flimzy

+0

使用'.length'假設在'success'事件上,這意味着收到了某些東西,不一定是數據。*肉質的部分* ...您所期待的。 – arttronics

0

您可以將傳入的響應啜進一行並刪除所有不必要的空白。

var JSON = '{\r\n' + 
' "Name": "sharon",\r\n' + 
' "Date": "07\/14\/2004",\r\n' + 
' "Data": "JVBERi0xLjINCg0KNC",\r\n' + 
' "DocumentId":1540,\r\n' + 
'}'; 
alert(JSON); 
alert(JSON.length); // 101 

var newJSON = slurp(JSON); 
alert(newJSON); 
alert(newJSON.length); // 91 

function slurp(str) { 
    str = str.replace(/(\r\n|\n|\r)/gm,""); 
    str = str.replace(/(\s+|\t)/gm,' '); 
    return str; 
} 
+0

在Perl中,slurping意味着剝離所有換行和回車。 –

+0

我知道,我的答案是使用JavaScript。我只是將這個功能命名爲... –