尝试通过$ .ajax发送二进制数据

时间:2018-10-19 10:31:49

标签: jquery ajax http content-type

我尝试使用jQuery的ajax()方法发布一些二进制数据。问题是数据128被编码为请求正文中的字符串"128"(不是0xf0)。

$.ajax({
  url: "ajax.php",
  type: "post",
  data: 128,
  contentType: "application/octet-stream",
  processData: false,
  success: function(data, status, xhr) {
    alert(data);
  }
});

请求正文(即HTTP标头后的字节)是否必须仅包含ASCII字符?

我对诸如内容类型和传输编码之类的HTTP概念感到困惑。我看到的是,大多数内容无论是最初是文本还是二进制(例如,图像字节都是base64编码的),都编码为ASCII字符。内容类型application/octet-stream似乎允许请求主体中包含二进制数据,但是如何解释以上示例?

1 个答案:

答案 0 :(得分:1)

您必须传递一种可以很好地处理二进制数据的类型,例如Uint8Arrayar

var x = new Uint8Array(1);
x[0]=128;
$.ajax({
  url: "ajax.php",
  type: "post",
  data: x,
  contentType: "application/octet-stream",
  processData: false,
  success: function(data, status, xhr) {
    alert(data);
  }
});