11

firefox浏览器报错如下:TypeError: r is undefined

这是 chrome 浏览器:未捕获的类型错误:无法读取未定义的属性“数据”

我还做了一个视频以便更好地理解。

当我更改字段中的值时发生错误

jsfiddle代码

Youtube 视频

按钮代码更新

      save: function (e) {
            var that = this;
            $.ajax({

                url: '/api/apdevice',
                type: e.model.id == null ? 'POST' : 'PUT',
                contentType: 'application/json',
                data: JSON.stringify(e.model),
                success: function (data) {
                    alert('yes');
                    that.refresh();
                },

                error: function (data) {
                    alert('no');
                    that.cancelRow();
                }

            });
        }
4

1 回答 1

3

这是因为您的数据源的更新方法正在被调用。它尚未设置为您提供TypeError.

你可以做两件事之一。

  1. 将数据源的更新方法设置为包含保存函数中包含的逻辑。您需要将更新设置为一个函数,以便能够动态控制该方法(POST/PUT)。此时您应该从保存事件中删除 ajax 代码。
  2. 将更新方法设置为虚拟函数,并将其作为保存事件的一部分进行处理。

这是方法#2的示例。

var dataSource = new kendo.data.DataSource({
  ..
  update: function(e) { return true; }
  ..
});

保持保存事件功能不变。

请注意,我遇到了一个Uncaught SyntaxError: Unexpected number错误。我相信这是源于LastClientsCount财产。

小提琴:http: //jsfiddle.net/mSRue/23/

于 2013-08-15T17:39:28.527 回答