代码之家  ›  专栏  ›  技术社区  ›  Mark Schultheiss

tinymce与jquery ajaxsetup datafilter不兼容

  •  3
  • Mark Schultheiss  · 技术社区  · 14 年前

    我在jquery ajaxsetup上使用以下datafilter选项:

        dataFilter: function(data)
        {
            var msg;
            if (typeof (JSON) !== 'undefined' &&
            typeof (JSON.parse) === 'function' &&
            data != undefined &&
            data != null &&
            data.length != 0 &&
            data != " ")
                msg = JSON.parse(data);
            else
                msg = eval('(' + data + ')');
            if (msg.hasOwnProperty('d'))
                return msg.d;
            else
                return msg;
        },
    

    当我把这个放在 $.ajaxSetup({, tinymce不会在我的文本区域初始化(只是显示原始文本区域,就好像没有安装tinymce一样)。如果我把这个过滤器移到实际的ajax调用中,我没有问题,一切都很好。注意,我正在将自己保存到一个启用ajax的.asmx文件中,它运行良好。

    jquery 1.4.3,tinymce jquery 3.3.9.2版

    为什么datafilter的ajaxsetup选项会导致tinymce不工作?

    1 回复  |  直到 9 年前
        1
  •  0
  •   Z. Zlatev    14 年前

    不知道为什么TinyMCE会失败,但是你可以创建一个函数来过滤你自己的请求,让TinyMCE成为。

    function filAjax( settings ) {
      $.ajax(
        $.extend(settings, 
        {
           dataFilter: function(data) {
             var msg;
             if (typeof (JSON) !== 'undefined' &&
             typeof (JSON.parse) === 'function' &&
             data != undefined &&
             data != null &&
             data.length != 0 &&
             data != " ")
                 msg = JSON.parse(data);
             else
                 msg = eval('(' + data + ')');
             if (msg.hasOwnProperty('d'))
                 return msg.d;
             else
                 return msg;
             }
        })
      );
    }