Jquery 如何使用外部json文件作为变量

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

在一篇文章中,我问如何实现客户端坏词过滤器

我的问题是,我不想将masive字符串发送到页面,而是从外部文件调用它

这是到目前为止的代码

    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;

});