Javascript 在ajax中显示文件的二进制代码

Javascript 在ajax中显示文件的二进制代码,javascript,ajax,file,binary,Javascript,Ajax,File,Binary,我想显示音乐文件的二进制代码。但不知何故,下面的代码似乎不起作用。有什么建议吗 function binary() { var xmlhttp; if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); } else { // code for IE6, IE5 xml

我想显示音乐文件的二进制代码。但不知何故,下面的代码似乎不起作用。有什么建议吗

function binary() {
    var xmlhttp;
    if (window.XMLHttpRequest) {  // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else {  // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("GET","1.wav",true);
    xmlhttp.overrideMimeType("text/plain; charset=x-user-defined");
    xmlhttp.onreadystatechange = function(buffer) {
        var binaryCode = "";
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            var binStr = this.responseText;
            for (var i=0; i<binStr.length; i++) {
                var byte = binStr.charCodeAt(i) & 0xff;  // get byte at i
                binaryCode += byte;
            }   
        }
        document.getElementById("result").innerHTML = binaryCode; // should display binary code
    };
    xmlhttp.send();
}
函数二进制(){
var-xmlhttp;
if(window.XMLHttpRequest){//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
else{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
open(“GET”,“1.wav”,true);
overrideMimeType(“text/plain;charset=x-user-defined”);
xmlhttp.onreadystatechange=函数(缓冲区){
var binaryCode=“”;
if(xmlhttp.readyState==4&&xmlhttp.status==200){
var binStr=this.responseText;

对于(var i=0;i并非所有字节值都可以在字符串中表示,并且不会出现或导致字符串被截断

XMLHttpResponse.ResponseText/ResponseXML将以字符串形式返回http响应内容。例如,任何字节值为0都将终止该字符串


让服务器返回字节的Base64表示形式,并在客户端解码为字节值。

您的代码在我的chrome浏览器上运行正常。 你正在试验的问题到底是什么

您可能希望通过执行以下操作以十六进制形式显示二进制:

binaryCode += '0x' + byte.toString(16) + ' '
编辑: 这个JSFIDLE在我的chrome上工作:


然而,我不认为这种方法是交叉的,特别是如果你想处理ie(虽然还没有测试过)

在我的chrome浏览器上,它似乎不起作用。没有显示任何内容。我不知道问题是否出在音乐文件上。从我的观点来看,很难说,但首先要检查的是它是否真的进入if(…status==200),以及数据长度是否正确。使用chrome debugger和console.log帮助您