2013-02-05 163 views
2

工作時我想我XHR響應轉換爲TypedArray在JavaScript的時候,我得到:類型錯誤:錯誤類型與類型化數組

TypeError: Type error

這是我的服務器端代碼(ASP.NET Web窗體):

public partial class _Default : Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     int number = 4; 
     Response.BinaryWrite(BitConverter.GetBytes(number)); 
     Response.End(); 
    } 
} 

,在這裏我的客戶端代碼:

xhr.open("GET", "http://localhost:6551/Default.aspx", false); 
xhr.overrideMimeType("text/plain; charset=x-user-defined"); 
xhr.send(null); 
var sss = new DataView(xhr.response); 

而且當我嘗試到轉換與Int16Array我得到這個錯誤:

RangeError: Size is too large (or is negative).

這有什麼錯我的代碼?

+0

你的「xhr.response」中有什麼? – MarcoK

+0

@MarcoK我應該告訴你的迴應(使用Firebug等)? –

+0

是的,這就是我的意思('console.log(xhr.response)'並放置結果) – MarcoK

回答

2

好吧,我發現這個問題,我應該在XHR請求使用xhr.responseType = "arraybuffer";和代碼總算是:

var xhr = new XMLHttpRequest(); 

xhr.open("GET", "http://localhost:6551/Default.aspx", true); 
xhr.responseType = "arraybuffer"; 
xhr.onload = function(e) { 
    var arraybuffer = xhr.response; // not responseText 
    console.log(new Uint32Array(arraybuffer)); 
} 
xhr.send(); 

更多細節:https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest

感謝您的幫助@MarcoK。

+1

沒問題,很高興你找到解決方案! – MarcoK