为啥当我点击更新按钮时出现错误TypeError: r is undefined?
Posted
技术标签:
【中文标题】为啥当我点击更新按钮时出现错误TypeError: r is undefined?【英文标题】:Why when I click on the update button error TypeError: r is undefined happen?为什么当我点击更新按钮时出现错误TypeError: r is undefined? 【发布时间】:2013-08-13 22:50:44 【问题描述】:firefox浏览器报错如下:TypeError: r is undefined
这是 chrome 浏览器: 未捕获的类型错误:无法读取未定义的属性“数据”
我还制作了一个视频以便更好地理解。
当我更改某个字段中的值时出现错误
jsfiddle code
youtube video
按钮代码更新
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();
);
【问题讨论】:
很遗憾,我无法观看您的视频,但在加载 Fiddle 时,Chrome 中出现以下错误:端口:无法建立连接。接收端不存在。 [VM] lastError (856):29 Uncaught TypeError: Cannot call method 'extend' of undefined 现在你可以看到视频了 您的 JSFiddle 在 chrome 和 firefox 中不会对我产生错误。适合你吗? 我已经测试了其他几台计算机,当您单击按钮时出现错误编辑更改量打开弹出窗口,然后单击更新按钮。也可以测试jsfiddle.net/mSRUe/19/embedded/result 哦,看来我实际上需要更改字段数据才能看到错误。 【参考方案1】:这是因为您的数据源的更新方法正在被调用。它尚未设置为您提供TypeError
。
你可以做两件事之一。
-
设置数据源的更新方法以包含保存函数中包含的逻辑。您需要将更新设置为一个函数,以便能够动态控制该方法(POST/PUT)。此时您应该从保存事件中删除 ajax 代码。
将更新方法设置为虚拟函数,并将其作为保存事件的一部分进行处理。
这是方法 #2 的示例。
var dataSource = new kendo.data.DataSource(
..
update: function(e) return true;
..
);
保持保存事件功能不变。
请注意,我收到了 Uncaught SyntaxError: Unexpected number
错误。我相信这是源自LastClientsCount
属性。
小提琴:http://jsfiddle.net/mSRUe/23/
【讨论】:
谢谢你的回答,你能在jsfiddle中举个例子吗? 我在 Firefox 浏览器中收到此错误:SyntaxError: missing ;在 d.0=value 之前和错误 chrome 浏览器中:未捕获 SyntaxError:意外数字,我还添加了代码“LastClientsCount”也仍然给出错误。jsfiddle.net/psot98/mSRUe/24 是的,就像我说的那样,存在那个错误,但这是一个不同的问题。也许写一篇新文章或调试该属性/减少你的代码。 @objectjson 我看到你发了一个新帖子。这个满足你的要求吗?赞成和/或接受? 我不接受我自己不能投票的问题,但我有对其他人很重要的问题,我的问题已被评分。无论如何,我很抱歉以上是关于为啥当我点击更新按钮时出现错误TypeError: r is undefined?的主要内容,如果未能解决你的问题,请参考以下文章
为啥在尝试从 api 获取数据时出现此错误“TypeError:字符串索引必须是整数”?
为啥我在使用 jquery 数据表时出现这种类型的错误“TypeError:oColumn is undefined”,我从它的文档中全部遵循