[erlang-questions] Decoding term_to_binary in javascript

Joe Armstrong <>
Wed Nov 16 08:57:45 CET 2011


On Tue, Nov 15, 2011 at 11:54 PM, Andrew Berman <> wrote:

> What happens if you use the dataFilter function on jQuery.ajax?  The docs
> say:
>
> A function to be used to handle the raw response data of
> XMLHttpRequest.This is a pre-filtering function to sanitize the response.
> You should return the sanitized data. The function accepts two arguments:
> The raw data returned from the server and the 'dataType' parameter.
>

Tried that - but pre-filtering function does not appear to get the raw data
- it gets a
utf8 string that has been obtained by parsing the data from the server.

/joe


>
> Just thinking you could decode the response in that function.
>
> Never tried it though....
>
> --Andrew
>
>
> On Tue, Nov 15, 2011 at 12:42 PM, Joe Armstrong <> wrote:
>
>> To anser my own question it's not so easy.
>>
>> A bert encoded term starts <<131, ...>>
>>
>> Now 131 is not a single byte UTF8 character -  when I make
>> an ajax call from jquery in the browser the ajax stuff tryoes to convert
>> the blob containing a <<128,...>> to a utf8 string
>> and the decoding fails.
>>
>> There are some html5 extensions -- something like
>>
>>      var r = new XMLHttpRequest();
>>      r.open("GET", "get_bert", true);
>>      r.responseType = "arraybuffer"
>>
>>       r.onload = function(e) {   // XHR2
>>          var arr = new Uint8Array(this.response);
>>
>> seems to work - but the exiting libraries cannot decode
>> a Unit8Array :-(
>>
>> Why the heck sockets and ajax calls can't just sent back
>> sequences of bytes and not mess with them is a mystery to me
>>
>> /Joe
>>
>>
>> On Tue, Nov 15, 2011 at 2:56 PM, Joe Armstrong <> wrote:
>>
>>> This looks good.
>>>
>>> Another question.
>>>
>>> Has anybody an example client-server example of bert?
>>>
>>> I'm thinking:
>>>
>>>            server in erlang  = bert + mochiweb/misultin/cowboy/yaws ...
>>>            client in browser = jquery + bert
>>>
>>> Id like to make an ajax RPC from the client that returns a bert blob
>>> unpacks the blob and displays the result.
>>>
>>>
>>> /Joe
>>>
>>> On Tue, Nov 15, 2011 at 1:35 PM, Ulf Wiger <> wrote:
>>>
>>>>
>>>> If you can settle for BERT, I think there are some JavaScript
>>>> implementations out there:
>>>>
>>>> https://github.com/rtomayko/node-bertrpc/blob/master/src/bert.js
>>>>
>>>> BR,
>>>> Ulf W
>>>>
>>>> On 15 Nov 2011, at 12:57, Joe Armstrong wrote:
>>>>
>>>> > I'd like to send a term_to_binary encoded term to a web client and
>>>> decode it in javascript.
>>>> >
>>>> > If I could do this it would eliminate the impedance mismatch between
>>>> server-side databases
>>>> > and client code in a browser. I want to totally eliminate conversions
>>>> to and from JSON. Just send
>>>> > raw blobs containing term_to_binary encoded data and pluck what I
>>>> want in the client.
>>>> >
>>>> > I would not necessarily want to decode the entire blob, I might just
>>>> want to extract a specific item
>>>> > So for example if In Erlang I created a blob by saying
>>>> >
>>>> >       Blob = term_to_binary({thing,"foo","bar",["baz"]})
>>>> >
>>>> > I'd like to send this to a browser and in Javascript say:
>>>> >
>>>> >      var z = mylib_hd(my_lib_element(4,Blob))
>>>> >
>>>> > Whereby z would be the javascript string "baz".
>>>> >
>>>> > Has anybody implemented anything like this?
>>>> >
>>>> > /Joe
>>>> >
>>>> >
>>>> >
>>>> > _______________________________________________
>>>> > erlang-questions mailing list
>>>> > 
>>>> > http://erlang.org/mailman/listinfo/erlang-questions
>>>>
>>>>
>>>
>>
>> _______________________________________________
>> erlang-questions mailing list
>> 
>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20111116/6618f0e7/attachment.html>


More information about the erlang-questions mailing list