Попытка отправить двоичные данные через $ .ajax - PullRequest
0 голосов
/ 19 октября 2018

Я попытался опубликовать некоторые двоичные данные, используя метод ajax() в jQuery.Проблема заключается в том, что данные 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, таких как тип контента и кодировка передачи.Я увидел, что большая часть содержимого кодируется в символы ASCII, независимо от того, являются ли они исходными текстовыми или двоичными (например, байты изображения в кодировке base64).Тип содержимого application/octet-stream, по-видимому, разрешает двоичные данные, включенные в тело запроса, но как объяснить приведенный выше пример?

1 Ответ

0 голосов
/ 19 октября 2018

Вам нужно будет передать тип, который может хорошо обрабатывать двоичные данные, например 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);
  }
});
...