Browse Source

Fix abort with JSONP

We now check that the `abort` method actually exists before aborting
the request, as JSONP does not include the `abort` method because
a JSONP request technically cannot be aborted.

This closes https://github.com/select2/select2/issues/3217.
Kevin Brown 10 years ago
parent
commit
e7498987a5

+ 6 - 4
dist/js/select2.full.js

@@ -1668,8 +1668,6 @@ S2.define('select2/selection/allowClear',[
   };
   };
 
 
   AllowClear.prototype._handleClear = function (_, evt) {
   AllowClear.prototype._handleClear = function (_, evt) {
-    console.log(arguments);
-
     // Ignore the event if it is disabled
     // Ignore the event if it is disabled
     if (this.options.get('disabled')) {
     if (this.options.get('disabled')) {
       return;
       return;
@@ -3275,8 +3273,12 @@ S2.define('select2/data/ajax',[
     var matches = [];
     var matches = [];
     var self = this;
     var self = this;
 
 
-    if (this._request) {
-      this._request.abort();
+    if (this._request != null) {
+      // JSONP requests cannot always be aborted
+      if ($.isFunction(this._request.abort)) {
+        this._request.abort();
+      }
+
       this._request = null;
       this._request = null;
     }
     }
 
 

File diff suppressed because it is too large
+ 0 - 0
dist/js/select2.full.min.js


+ 6 - 4
dist/js/select2.js

@@ -1668,8 +1668,6 @@ S2.define('select2/selection/allowClear',[
   };
   };
 
 
   AllowClear.prototype._handleClear = function (_, evt) {
   AllowClear.prototype._handleClear = function (_, evt) {
-    console.log(arguments);
-
     // Ignore the event if it is disabled
     // Ignore the event if it is disabled
     if (this.options.get('disabled')) {
     if (this.options.get('disabled')) {
       return;
       return;
@@ -3275,8 +3273,12 @@ S2.define('select2/data/ajax',[
     var matches = [];
     var matches = [];
     var self = this;
     var self = this;
 
 
-    if (this._request) {
-      this._request.abort();
+    if (this._request != null) {
+      // JSONP requests cannot always be aborted
+      if ($.isFunction(this._request.abort)) {
+        this._request.abort();
+      }
+
       this._request = null;
       this._request = null;
     }
     }
 
 

File diff suppressed because it is too large
+ 0 - 0
dist/js/select2.min.js


+ 6 - 2
src/js/select2/data/ajax.js

@@ -43,8 +43,12 @@ define([
     var matches = [];
     var matches = [];
     var self = this;
     var self = this;
 
 
-    if (this._request) {
-      this._request.abort();
+    if (this._request != null) {
+      // JSONP requests cannot always be aborted
+      if ($.isFunction(this._request.abort)) {
+        this._request.abort();
+      }
+
       this._request = null;
       this._request = null;
     }
     }
 
 

Some files were not shown because too many files changed in this diff