JQuery.AJAX - может ли мой сервер вернуть блок данных? - PullRequest
7 голосов
/ 26 марта 2010

Для опции dataType функции JQuery.AJAX я не вижу байтовый массив или большой двоичный объект как одну из возможностей.

Как я могу получить его, чтобы мой сервер мог возвращать байтовый массив какрезультат вызова AJAX?

Я мог бы преобразовать большой двоичный объект в текст, но я собираюсь сделать его компактным.

РЕДАКТИРОВАТЬ: большой двоичный объект не будет показан пользователю.Мой javascript будет смотреть на него и создавать из него объект.Это примерно 50-килобайтный блоб, и скорость важна, поэтому я не хочу добавлять какие-либо помехи, если мне не нужно.

РЕДАКТИРОВАТЬ: мои данные представляют собой массив целых чисел.Возможна кодировка Base64, но я бы предпочел не добавлять раздувание.Если нет способа сделать это, я думаю, я бы просто закодировал его с помощью Base64.

1 Ответ

3 голосов
/ 26 марта 2010

РЕДАКТИРОВАТЬ : Исходя из комментариев, я хотел бы пересмотреть свой ответ. Если вы передаете массив целых чисел и можете получить его в этом формате на своей серверной стороне, оттуда вы обязательно должны превратить его в JSON . JSON поддерживает передачу целых чисел, jQuery легко поддерживает получение JSON.

Пример JSON для массива целых чисел:

{
"array": [0, 1, 2, 3, 4, 5]
}

Пример кода Javascript / jQuery для извлечения этого JSON:

$.getJSON('/url/to/binary/data/returning/json', 
    function(data) {
        // access the array this way:
        var array = data.array;
        var first = array[0];
        // so here you can do whatever your code needs with that array
    }
);

Старые предложения

Хотя я согласен с вышеприведенными комментариями, я считаю, что это должно быть возможно сделать. Существует кодировщик / декодер base64 плагин jQuery , который должен помочь в передаче ваших данных. (Причинение немного раздувать , это правда). Если вы закодируете массив с помощью base64, вы сможете передать его.

Если вы просто хотите загрузить двоичные данные (не отображать их), задайте MIME-тип вашего ответа для application / octet-stream и задайте имя вложения для соответствующей обработки в браузере.

$.get('/url/to/binary/data',
    function(data) {
        // convert binary data to whatever format you would like to use here with
        // an encoded string, have the browser download, call
        // a helper function, etc.
    }
);

Возможно, вы захотите рассмотреть другие форматы, которые чаще всего передаются через HTTP (или, если необходимо, использовать другой транспортный протокол), в зависимости от того, что вы пытаетесь сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...