1

在我的 Drupal 视图中,我激活了 Ajax,在我的前端一切正常,但是当用户发出 ajax 请求然后他切换到另一个页面(在他从 ajax 请求得到响应之前)我看到了这个警报

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

2 回答 2

1

发生此错误是因为它是在 Drupal 中处理 AJAX 错误的标准方式。如果您提交表单,而 AJAX 请求正在处理您会收到错误。

这个错误实际上是 Drupal 的预期目的,Drupal 是misc/drupal.js通过Drupal.ajax.prototype.error = function (response, uri)Drupal.ajaxError = function (xmlhttp, uri).

请注意,这更多的是 UX 问题,而不是错误。

Drupal 站点上存在关于在正常站点操作期间 Drupal 警报“AJAX HTTP 请求异常终止”的突出问题,使站点访问者/编辑者困惑于为 Drupal 8 修复它。

对于 Drupal 7,您可以尝试应用以下核心补丁: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);
于 2014-06-28T08:29:38.160 回答
0

这是解决此问题的简单方法:

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

编写一些损坏的代码,因此它将在该行停止 javascript 的执行。

于 2015-07-10T15:31:13.053 回答