【发布时间】:2016-08-24 17:52:14
【问题描述】:
假设我有一个 post AJAX 调用,我想将返回的数据放入一些 HTML 元素中。
$.post(settings.url, function(data) {
$('#someElement').text(data.someData1);
$('#someElement2').text(data.someData2);
});
我是一名后端开发人员,我很自然地必须对来自用户的任何数据进行服务器端验证。虽然情况正好相反,但上面的代码对我来说感觉有点不对劲(未验证外部数据)。但另一方面,我知道我从服务器返回了什么。
问题是很好相信从(也是我的)后端应用程序返回的data 将具有预期的结构,还是我应该以某种方式验证每个来自服务器的数据? p>
另外的问题是是否有一些很好的方法来进行这种验证?手动验证每条数据的存在似乎是一件令人头疼的事情。特别是对于更复杂的数据结构。
就在写这个问题的过程中,我想到了一个想法。我可以使用$.extend(),就像它通常用于在编写模块/插件时设置默认选项一样。比如:
$.post(settings.url, function(data) {
var trustedStructure = $.extend({
someData1: $('#someElement').text(),
someData2: $('#someElement2').text(),
}, data);
$('#someElement').text(trustedStructure .someData1);
$('#someElement2').text(trustedStructure .someData2);
});
这样我就可以将当前数据作为默认数据或任何其他数据作为可信数据。
编辑: 忘记注意了。我说的是纯 JSON 数据响应。不包括 HTML 等。
【问题讨论】:
-
@Andreas 是的,当然。这只是我写的一段代码,没有经过测试来展示我的想法,这部分是之前的 ctrl+c/v ;-)。
-
如果你不相信它,绝对的。
-
@KevinB 我不相信自己的未来 ;-) 而且我想知道常见的方法是什么。
标签: javascript jquery ajax validation