我使用此代碼發送一個音頻文件的請求:的XMLHttpRequest發出的onreadystatechange但不onload事件(使用Dajaxice)
request = new XMLHttpRequest()
request.open("get", 'http://localhost:8000'+url, true)
request.responseType = "arraybuffer"
request.onProgress =()->
console.log 'progress...'
return
request.onload =()->
console.log 'load...'
return
request.onerror =()->
console.error 'error'
return
request.onreadystatechange = (event)->
if request.readyState == 4
if request.status == 200
console.log "200"
else
console.log "error"
return
request.send()
達到onreadystatechange
與request.readyState == 4
和request.status == 200
,但它從未進入onload
回調。
(正因爲如此,Howler無法正常工作。)
我使用Django dajaxice。
在服務器端,我使用Django與SocketIOServer,一切似乎確定,它記錄:
127.0.0.1 - - [2014-11-24 11:18:26] "GET /static/sounds/space_ship_engine.mp3 HTTP/1.1" 200 689789 0.099860
(在Chrome 40.0.2214.10測試版(64位),在OS X上的優勝美地10.10.1)
---更新---
我需要request.response
從onload
回調與audioContext.decodeAudioData()
使用(見here),而在onreadystatechange
我只有request.responseText
。
當你有'request.readyState == 4 && request.status == 200'時,爲什麼你需要'onload'?你不會用這種方式嗎? – nnnnnn 2014-11-24 11:38:27
因爲Howler.js使用'onload'回調。我需要'request.response'來使用'audioContext.decodeAudioData',而在'onreadystatechange'中我只有'request.responseText'。 – 2014-11-24 11:41:30