Kendo DataSource捕获服务器响应

时间:2019-10-29 03:38:49

标签: kendo-ui kendo-grid kendo-datasource

在我的kendo dataSource中>传输>更新。我想捕获服务器响应状态(请参阅图像),但是这些方法都不会触发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');
    }
  }
},

enter image description here

console.log(e)屏幕截图

enter image description here

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

您需要在update函数内进行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

答案 2 :(得分:0)

这不是适用的好方法,但可以用来获取响应。

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