- 締切済み
XHRのレスポンスがiOSでnullになる
GETTING STARTED WITH WEB AUDIO API http://www.html5rocks.com/en/tutorials/webaudio/intro/ こちらのサイトを参考に var xhr = new XMLHttpRequest(); var loader = this; xhr.open('GET', url, true); xhr.responseType = 'arraybuffer'; xhr.onload = function() { loader.ctx.decodeAudioData(xhr.response, function(buffer) { loader.bufferList[key] = buffer; console.log(buffer); }, function(error) {console.log(error)} ); }; xhr.onerror = function() { console.log('XHR error'); }; try { xhr.send(); } catch(e) {}; こんな感じでオーディオデータを取得してるのですが、 キャッシュマニフェストでサイトをキャッシュすると iOS6にてxhr.responseがnullになってしまうっぽいです。 ちなみにPCのChromeで確認した際は問題なかったです。 結構調べたのですが憔悴してしまいました。。。 どなたか何か解決方法ご存知の方いらっしゃいませんでしょうか??
- みんなの回答 (2)
- 専門家の回答
みんなの回答
あ、キャッシュしないと正常に動くのですね。だとすると全然関係ないかもしれません。すみません。
onloadイベント時にresponseで取得するっていうのは、XMLHttpRequest level2からサポートされている手法です。iPhoneのSafariでまだ対応してないってことはないでしょうか? onloadを使わず、従来のonreadystatechangeを利用した形に書きなおしてみてはどうでしょう。また、responseTypeとresponseも使わず、responseTextなどからデータを切り分けるようにします。要するに、XMLHttpRequest level2以前の書き方に戻すわけですね。そちらのほうが確実だと思います。
補足
一応キャッシュから読まない時は問題なくデータが入ってる状態なのですが、、、。が、とりあえず帰ったら試してみます!ありがとうございます!