2013-06-03 125 views
1

異常警報在我的Drupal鑑於我激活了阿賈克斯,在我的前端一切正常,但是當用戶做出一個Ajax請求,然後他切換到其他頁面(之前,他得到了來自阿賈克斯的響應請求)我看到此警報一個AJAX HTTP請求終止在Drupal

An AJAX HTTP request terminated abnormally. 
Debugging information follows. 
Path: /en/views/ajax 
StatusText: 
ResponseText: 
ReadyState: 4 
+2

這是因爲ajax請求沒有完成,並且用戶請求了新的頁面! –

回答

1

發生此錯誤是因爲它是在Drupal中處理AJAX錯誤的標準方法。如果您提交表單,而AJAX請求正在處理,您將收到錯誤。

這個錯誤實際上是Drupal和Drupal的預期目的是通過Drupal.ajax.prototype.error = function (response, uri)結合Drupal.ajaxError = function (xmlhttp, uri)在Drupal 7的misc/drupal.js文件中引發此錯誤。

請注意,這是比問題更多的UX問題。

上有用於固定它的Drupal 8

爲Drupal 7關於Drupal alerts "An AJAX HTTP request terminated abnormally" during normal site operation, confusing site visitors/editors Drupal站點懸而未決的問題,你可以嘗試應用以下核心補丁:D7-fix_autocomplete_terminated_error-1232416-179-do-not-test.patch出外:

--- a/misc/ajax.js 
+++ b/misc/ajax.js 
@@ -448,7 +448,10 @@ Drupal.ajax.prototype.getEffect = function (response) { 
    * Handler for the form redirection error. 
    */ 
Drupal.ajax.prototype.error = function (response, uri) { 
- alert(Drupal.ajaxError(response, uri)); 
+ // Fix for autocomplete terminated error. 
+ if (response.status != 0) { 
+ alert(Drupal.ajaxError(response, uri)); 
+ } 
    // Remove the progress element. 
    if (this.progress.element) { 
    $(this.progress.element).remove(); 
diff --git a/misc/autocomplete.js b/misc/autocomplete.js 
index 8f7ac60..980c1ca 100644 
--- a/misc/autocomplete.js 
+++ b/misc/autocomplete.js 
@@ -306,7 +306,10 @@ Drupal.ACDB.prototype.search = function (searchString) { 
     } 
     }, 
     error: function (xmlhttp) { 
-  alert(Drupal.ajaxError(xmlhttp, db.uri)); 
+  // Fix for autocomplete terminated error. 
+  if (xmlhttp.status != 0) { 
+   alert(Drupal.ajaxError(xmlhttp, db.uri)); 
+  } 
     } 
    }); 
    }, this.delay); 
0

這裏的一個簡單的方法來解決這個問題:

$(document).ajaxError(function() { 
 
     donotshowajayerror; // prevent ajax errors alerts 
 
});

寫一些破碎的代碼,所以它會停止在該行執行javascript。