Jquery 如何使用外部json文件作为变量
在一篇文章中,我问如何实现客户端坏词过滤器 我的问题是,我不想将masive字符串发送到页面,而是从外部文件调用它 这是到目前为止的代码Jquery 如何使用外部json文件作为变量,jquery,json,Jquery,Json,在一篇文章中,我问如何实现客户端坏词过滤器 我的问题是,我不想将masive字符串发送到页面,而是从外部文件调用它 这是到目前为止的代码 var filter = ['ass']; // this is a literal JSON result String.prototype.repeat = function (num) { return new Array(num + 1).join(this); } $('body').html(fun
var filter = ['ass']; // this is a literal JSON result
String.prototype.repeat = function (num) {
return new Array(num + 1).join(this);
}
$('body').html(function (i, txt) {
for (var i = 0; i < filter.length; i++) {
// Create a regular expression and make it global
var pattern = new RegExp('\\b' + filter[i] + '\\b', 'g');
txt = txt.replace(pattern, "****");
}
return txt;
});
在不太了解上一主题的情况下,只需在
过滤器上执行替换,并使\
转义(\
)。虽然不确定如何使用JavaScript打开文件(除非文件是托管的,并且您使用ajax或其他方法检索列表)。JS在访问本地文件时非常沙盒化
var pattern = new RegExp('\\b' + filter[i].replace('\\','\\\\') + '\\b', 'g');
以下是一个例子:
因为JSON通常是纯JavaScript的,所以上面的示例应该可以运行。因为JQuery总是从浏览器上下文运行,所以无论如何,您都会下载文件,所以这不会像您认为的那样工作
但是,如果要使用此方法,则需要使用JQuery方法之一,如$.get或$.getJSON,在解析文件之前从服务器获取文件:
var filter = '';
$.getJSON('/generic/profanity', function(data) {
// data is the contents of the
filter = data;
});
是的,基本上我在MVC控制器中生成JSON,内容来自数据库。我想缓存页面以便减少带宽使用。但是jQuery可以有一个更好更简单的解决方案。我喜欢这个解决方案,它对我来说很有意义,但是它没有按预期工作。注意,过滤也应该发生在getJSON回调中,因为只有在那时filterData才可用。啊,就是@BGerrissen。我在filter函数中使用了getJson,而不是getJson中的filter函数。注意,这可能会在运行代码之前破坏其他实现事件侦听器的javascript。在较旧的浏览器中,它还可能造成内存泄漏,基本上会创造令人敬畏的用户体验。最好在后端实现亵渎过滤器。运行此客户端过滤器之前对html元素的任何存储引用也将丢失,因为替换的html将由全新的html元素实例组成。
var pattern = new RegExp('\\b' + filter[i].replace('\\','\\\\') + '\\b', 'g');
var filter = '';
$.getJSON('/generic/profanity', function(data) {
// data is the contents of the
filter = data;
});