THRIFT-1514 Callbacks with newer jQuery versions don't work
Patch: Andrew Grumet
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1332619 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/js/thrift.js b/lib/js/thrift.js
index d1cf099..2de5f1a 100644
--- a/lib/js/thrift.js
+++ b/lib/js/thrift.js
@@ -223,46 +223,26 @@
throw 'Thrift.js requires jQuery 1.5+ to use asynchronous requests';
}
- // Deferreds
- var deferred = jQuery.Deferred();
- var completeDfd = jQuery._Deferred();
- var dfd = deferred.promise();
- dfd.success = dfd.done;
- dfd.error = dfd.fail;
- dfd.complete = completeDfd.done;
+ var thriftTransport = this;
var jqXHR = jQuery.ajax({
url: this.url,
data: postData,
type: 'POST',
cache: false,
- dataType: 'text',
- context: this,
- success: this.jqResponse,
- error: function(xhr, status, e) {
- deferred.rejectWith(client, jQuery.merge([e], xhr.tArgs));
+ dataType: 'text thrift',
+ converters: {
+ 'text thrift' : function(responseData) {
+ thriftTransport.setRecvBuffer(responseData);
+ var value = recv_method.call(client);
+ return value;
+ }
},
- complete: function(xhr, status) {
- completeDfd.resolveWith(client, [xhr, status]);
- }
+ context: client,
+ success: jQuery.makeArray(args).pop()
});
- deferred.done(jQuery.makeArray(args).pop()); //pop callback from args
- jqXHR.tArgs = args;
- jqXHR.tClient = client;
- jqXHR.tRecvFn = recv_method;
- jqXHR.tDfd = deferred;
- return dfd;
- },
-
- jqResponse: function(responseData, textStatus, jqXHR) {
- this.setRecvBuffer(responseData);
- try {
- var value = jqXHR.tRecvFn.call(jqXHR.tClient);
- jqXHR.tDfd.resolveWith(jqXHR, jQuery.merge([value], jqXHR.tArgs));
- } catch (ex) {
- jqXHR.tDfd.rejectWith(jqXHR, jQuery.merge([ex], jqXHR.tArgs));
- }
+ return jqXHR;
},
setRecvBuffer: function(buf) {