默认情况下,jQuery序列化数据(传递的
data属性)-这意味着将
0xFD008001数字 作为“ 4244668417” 字符串
(10个字节,而不是4个)传递给服务器,这就是服务器将其视为未按预期方式处理的原因。
有必要通过将
$.ajaxproperty 设置
processData为来防止这种行为
false:
默认情况下,作为对象传递给data选项的数据(从技术上讲,不是字符串)将被处理并转换为查询字符串,以适合默认的内容类型“ application /
x-www-form-urlenpred” 。如果要发送DOMdocument或其他未处理的数据,请将此选项设置为false。
……但这只是整个故事的一部分:
XMLHttpRequest.send实现有其自身的局限性。我想,这就是为什么最好的选择是使用
TypedArrays 制作自己的序列化
程序
:
// Since we deal with Firefox and Chrome only var bytesToSend = [253, 0, 128, 1], bytesArray = new Uint8Array(bytesToSend);$.ajax({ url: '%your_service_url%', type: 'POST', contentType: 'application/octet-stream', data: bytesArray, processdata: false});或根本不使用jQuery:
var bytesToSend = [253, 0, 128, 1], bytesArray = new Uint8Array(bytesToSend);var xhr = new XMLHttpRequest();xhr.open('POST', '%your_service_url%');xhr.setRequestHeader('Content-Type', 'application/octet-stream');xhr.send(bytesArray);


