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帮助您