【问题标题】:Kendo DataSource catch server responseKendo DataSource 捕获服务器响应
【发布时间】:2019-10-29 03:38:49
【问题描述】:

在我的剑道数据源 > 传输 > 更新。我想捕捉服务器响应状态(参考图片),但这些方法都不会触发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) 屏幕截图

【问题讨论】:

  • 你能把console.log放在你的成功函数上吗?只需记录 e 变量的内容,您就可以看到如何访问您在屏幕截图中提供的状态属性。
  • @Angelo 只需在上面的帖子中添加即可。
  • 你能做到console.log(e.responseText.status)console.log(response.JSON.status)吗?这应该为您提供所需的价值。

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


【解决方案1】:

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

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

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

【讨论】:

  • 本网站上通常不赞成仅使用代码的答案。您能否编辑您的答案以包含一些 cmets 或对您的代码的解释?解释应回答以下问题:它有什么作用?它是如何做到的?它去哪儿了?它如何解决OP的问题?见:How to anwser。谢谢!
【解决方案2】:

您需要在更新函数中进行 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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-03-11
      • 1970-01-01
      • 2023-03-04
      • 2019-02-27
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多