Thrift Javascript Library

License
=======

Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.

Using Thrift with Javascript
=====================

Allows javascript client interfaces to Thrift services.
This is geared for use in a web browser.

This client can only speak the JSON Protocol and the only supported
transport is AJAX.

There is a test httpd service in the test dir that requires
http://hc.apache.org under test dir

Dependencies
============
A JavaScript enabled browser. Tested with:
 *IE 6,7,8
 *FF 2,3
 *Safari 3 & 4
