我使用此代码发送音频文件请求:
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 beta(64位)上,在OS X Yosemite 10.10.1上)
---更新---
我需要request.response
回调中的onload
与audioContext.decodeAudioData()
一起使用(请参阅here),而在onreadystatechange
我只有request.responseText
答案 0 :(得分:0)
这是由于dajaxice修改了我的XmlHttpRequest。
我设法在加载dajaxice之前将原始XMLHttpRequest对象保存到变量(例如window.OriginalXmlHttpRequest = XmlHttpRequest
)中,然后使用我的变量来取消请求。
另一种解决方案是摆脱dajaxice。