Javascript 传出数据的XmlHttpRequest重写EMIMetype

Javascript 传出数据的XmlHttpRequest重写EMIMetype,javascript,ajax,xmlhttprequest,Javascript,Ajax,Xmlhttprequest,我希望XmlHttpRequest不接触(即转换为UTF-8或任何其他编码)它向服务器发送和从服务器接收的任何字符 对于从服务器接收到的字符,我知道我可以执行XmlHttpRequest#overrideMimeType('text/plain;charset=x-user-defined'),而字符则不受影响 但是,对于通过XmlHttpRequest#send调用发送到服务器的字符,我找不到方法告诉XmlHttpRequest不要触摸这些字符。我看到XmlHttpRequest将它们编码到U

我希望
XmlHttpRequest
不接触(即转换为
UTF-8
或任何其他编码)它向服务器发送和从服务器接收的任何字符

对于从服务器接收到的字符,我知道我可以执行
XmlHttpRequest#overrideMimeType('text/plain;charset=x-user-defined')
,而字符则不受影响


但是,对于通过
XmlHttpRequest#send
调用发送到服务器的字符,我找不到方法告诉
XmlHttpRequest
不要触摸这些字符。我看到
XmlHttpRequest
将它们编码到
UTF-8
中,无论我做了什么尝试。有没有办法防止这种情况发生?

您可以尝试对在base64中发送的数据进行编码。据我所知,无论采用何种编码(UTF-8/Latin-1/whatever),这都是有效的。

我在上传从麦克风抓取的音频(通过闪存)时遇到了类似的问题。 下面是我如何解决它的(在FF 9和Crimum 15中进行了测试)。下面的js代码将二进制输入作为字符串,并将其上载到服务器,而不进行任何更改/编码。 希望这对某人有用

    var audioBytes = <the data you want sent untouched>
    var crlf = '\r\n';
    var body = '';
    var doubleDash = '--';
    var boundary = '12345678901234567890';

    var file = {
            name: "online-recording.wav",
            type: "audio/x-wav",
            size: audioBytes.length,
            recordedContent: audioBytes
    };

    var body = doubleDash + boundary + crlf +
            'Content-Disposition: form-data; name="file"; ' +
            'filename="' + unescape(encodeURIComponent(file.name)) + '"' + crlf +
            'Content-Type: ' + file.type + crlf + crlf +
            file.recordedContent + crlf +
            doubleDash + boundary + doubleDash + crlf;

    // copy binary content into a ByteArray structure, so that the browser doesn't mess up encoding
    var audioByteArray = new Uint8Array(body.length);

    for (var i=0; i< audioByteArray.length; i++) {
            audioByteArray[i] = body.charCodeAt(i);
    }

    // use an XMLHttpRequest to upload the file
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
                    console.log(xhr.readyState);
    };
    xhr.open('post', url, true);
    xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');

    // setup AJAX event handlers here

    xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);
    xhr.send(audioByteArray.buffer);
var audioBytes=
var crlf='\r\n';
变量体=“”;
var doubleDash='--';
变量边界='123456789001234567890';
变量文件={
名称:“在线录制.wav”,
类型:“音频/x-wav”,
大小:audioBytes.length,
录制内容:音频字节
};
变量主体=双破折号+边界+crlf+
'内容配置:表单数据;name=“file”;'+
'filename=“”+unescape(encodeURIComponent(file.name))+“”+crlf+
'内容类型:'+file.Type+crlf+crlf+
file.recordedContent+crlf+
双破折号+边界+双破折号+crlf;
//将二进制内容复制到ByteArray结构中,这样浏览器就不会弄乱编码
var audioByteArray=新的UINT8阵列(体长);
对于(var i=0;i“提交”,
“#value”=>t('save'),
);
}
函数ajax\u pra\u dependent\u dropdown\u callback($form,
 
  • 如果存在另一个Ajax请求,如何停止一个Ajax请求
  • Ajax、PHP返回Internet Explorer中的json get
  • Ajax (不读书后获得成功)
  • django、ajax、jquery
  • 压缩/缩小ajax/json脚本
  • Sencha Touch 2-如何使用ajax/json中止存储加载
  • 在Primefaces的下拉列表中使用Ajax运行change event以加载控制器?
  • Ajax将空数据发送到控制器
  • Ajax Spring身份验证-本地主机与其他IP
  • Ajax 如何使angular2在成功的飞行前请求后正确触发正确的回调
  • MVC 5 AJax.Beginform routeValue生成错误
  • Ajax partialview中selectedlist的Id未传递给控制器
  • Ajax Next.js和Redux是可见的。在getInitialProps中处理请求