From f666d07289b2d51db3a320101d531b31371b4340 Mon Sep 17 00:00:00 2001 From: Roger Meier Date: Tue, 1 May 2012 11:20:12 +0000 Subject: [PATCH] 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 --- lib/js/test/build.xml | 2 +- lib/js/test/test.html | 2 +- lib/js/test/test.js | 2 +- lib/js/thrift.js | 42 +++++++++++------------------------------- 4 files changed, 14 insertions(+), 34 deletions(-) diff --git a/lib/js/test/build.xml b/lib/js/test/build.xml index f1aa51d3..7f93d0e1 100755 --- a/lib/js/test/build.xml +++ b/lib/js/test/build.xml @@ -93,7 +93,7 @@ - + diff --git a/lib/js/test/test.html b/lib/js/test/test.html index c3fd0b12..9396fd58 100755 --- a/lib/js/test/test.html +++ b/lib/js/test/test.html @@ -27,7 +27,7 @@ - + diff --git a/lib/js/test/test.js b/lib/js/test/test.js index fb36f689..ace676f3 100755 --- a/lib/js/test/test.js +++ b/lib/js/test/test.js @@ -390,7 +390,7 @@ module("Async"); ok(false); QUnit.start(); }) - .error(function(e){ + .error(function(xhr,status,e){ equal(e.errorCode, 1001); equal(e.message, "Xception"); QUnit.start(); diff --git a/lib/js/thrift.js b/lib/js/thrift.js index d1cf0990..2de5f1a3 100644 --- a/lib/js/thrift.js +++ b/lib/js/thrift.js @@ -223,46 +223,26 @@ Thrift.Transport.prototype = { 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) { -- 2.17.1