开发者社区> 问答> 正文

jquery的ajax的返回资源类型没有arraybuffer?

跟着网上的视频写的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”,如何解决?

展开
收起
小旋风柴进 2016-03-25 14:52:03 2940 0
1 条回答
写回答
取消 提交回答
  • 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第二版本的,这个意义上其实最好还是用原生代码省心……

    2019-07-17 19:14:23
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Javascript中的对象 立即下载
Javascript中的函数 立即下载
JavaScript函数 立即下载