Kendo DataSource 捕获服务器响应

Kendo DataSource catch server response

在我的 kendo 数据源 > 传输 > 更新。我想捕获服务器响应状态(参考图片),但是此方法的 none 触发了 alert。知道为什么吗?

update: {
  url:  "./getRevenueAccounts.php",
  type: "POST",
  data: function() {
          return { 
            method: "editRevenueAccounts"
          }
  }, 
  success: function(e) {
   if(e.status == 'duplicate'){
    alert('Trigger 1');
   }
  },
  error: function(e) {
    if (e.errorThrown == 'duplicate') {
      alert("Trigger 2");
    }else if(e.status == 'duplicate' ){
      alert("Trigger 3")
    }
  }, 
  complete: function (e) {
    if(e.status == 'duplicate'){
      alert('Trigger 4');
    }
  }
},

console.log(e) 屏幕截图

为您的成功功能尝试以下代码:

success: function(e) {
   if(e.responseText.status == 'duplicate'){
    alert('Trigger 1');
   }
  },

本质上,您正在查看状态 属性,而您本应查看响应文本 属性 以获取状态(这是该对象上的另一个 属性)。

您需要在更新函数中进行 ajax 调用。 喜欢:

var dataSource = new kendo.data.DataSource({
  transport: {
    read: function(options) {
      /* implementation omitted for brevity */
    },
    update: function(options) {
      // make JSONP request to https://demos.telerik.com/kendo-ui/service/products/update
      $.ajax({
        url: "https://demos.telerik.com/kendo-ui/service/products/update",
        dataType: "jsonp", // "jsonp" is required for cross-domain requests; use "json" for same-domain requests
        // send the updated data items as the "models" service parameter encoded in JSON
        data: {
          models: kendo.stringify(options.data.models)
        },
        success: function(result) {
          // notify the data source that the request succeeded
          options.success(result);
        },
        error: function(result) {
          // notify the data source that the request failed
          options.error(result);
        }
      });
    }
  },
  batch: true,
  schema: {
    model: { id: "ProductID" }
  }
});

有关详细信息,请从 telerik 文档中查看:https://docs.telerik.com/kendo-ui/api/javascript/data/datasource/configuration/transport.update

这不是一个很好的应用方法,但它可以用来获取响应。

if(e.responseText=='{"status":"duplicate"}'){
   kendo.alert('duplicate data');
}