跟着网上的视频写的demo,老师是用js写的,我想改用jquery,但是ajax这里有问题
$.ajax({url:"/medias/"+this.title,
type : "GET",
dataType : "arraybuffer",
success : function(data){
console.log(typeof(data));
ac.decodeAudioData(data,function(buffer){
var bufferSource = sc.createbufferSource();
bufferSource.buffer = buffer;
bufferSource.connect(ac.destination);
bufferSource[bufferSource.start?"start":"noteOn"](0);
console.log("starting");
},
function(err){
console.log(err);
});
},
error : function(data,err){
console.log(err);
}
});
打印出来得error信息是 “parsererror”,
如何解决?
jq中ajax可用的datatype是预定义好的,有如下几种:
xml
html
script
json
jsonp
text
如果你需要传递arraybuffer数据,可以使用text,然后手动parse。
update
mmmm……试试看这个。
// 字符串转为ArrayBuffer对象,参数为字符串
function str2ab(str) {
var buf = new ArrayBuffer(str.length*2); // 每个字符占用2个字节
var bufView = new Uint16Array(buf);
for (var i=0, strLen=str.length; i<strLen; i++) {
bufView[i] = str.charCodeAt(i);
}
return buf;
}
仔细想了想,ajax是基于xhr第一版本的,而ArrayBuffer是基于xhr第二版本的,这个意义上其实最好还是用原生代码省心……
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。