json从drupal api转义,用于常规php环境和jquery

json从drupal api转义,用于常规php环境和jquery,php,jquery,Php,Jquery,我发现了这个漂亮的插件,它可以让我从外部文件创建仪表板小部件 唯一的问题是它是围绕jquery 1.3.2构建的,我很固执,希望使用1.4.4 该插件仍然可以使用最新的jquery,但它失去了通过json调用加载外部小部件内容的功能 好吧,我收回它确实加载了内容,但是现在有一个新的异常。内容不能包含,&否则它将无法正确解析和加载 在这个插件的ajax文件中,我认为这个函数是罪魁祸首 // Taken from http://api.drupal.org/api/function/drupal_

我发现了这个漂亮的插件,它可以让我从外部文件创建仪表板小部件

唯一的问题是它是围绕jquery 1.3.2构建的,我很固执,希望使用1.4.4

该插件仍然可以使用最新的jquery,但它失去了通过json调用加载外部小部件内容的功能

好吧,我收回它确实加载了内容,但是现在有一个新的异常。内容不能包含,&否则它将无法正确解析和加载

在这个插件的ajax文件中,我认为这个函数是罪魁祸首

// Taken from http://api.drupal.org/api/function/drupal_to_js/7 (GPL 2)
function to_js($var) {
    // json_encode() does not escape <, > and &, so we do it with str_replace()
    return str_replace(array("<", ">", "&"), array('\x3c', '\x3e', '\x26'), json_encode($var));
}
//取自http://api.drupal.org/api/function/drupal_to_js/7 (GPL2)
函数到_js($var){
//json_encode()不转义和&,因此我们使用str_replace()来实现
返回str_replace(数组(“,”&)”、数组('\x3c'、'\x3e'、'\x26')、json_encode($var));
}
这将接收数据并将其传回,但从1.4.4开始,它将不起作用,我不知道为什么。有没有其他方法可以做到这一点?如果我注释掉这个函数,那么无论小部件是否包含它不喜欢的字符,它们都不会一起加载

例如:

jquery 1.3.2解析

<p>Hello World</p>
你好,世界

jQuery1.4+将只解析

Hello World (if I include the <p></p> then it won't load)
Hello World(如果我包括

,那么它将不会加载)
您可以重写或要求插件开发人员更新插件。为了自己完成这项工作,首先看一下所有1.4+版本,以检查主要在ajax函数中修改了哪些内容。问题的复杂性可以从非常简单到非常复杂。您甚至可能会发现一些需要向jQuery报告的bug。

您应该在自己的位置上进行替换(prob-PHP)

return''.str\u replace(数组(“\r”、“\n”、“、”、“&”),
数组('\r','\n','\x3c','\x3e','\x26'),
addslashes($var)).“;

return''.str\u replace(数组(“\r”、“\n”、“、”、“&”),
数组('\r','\n','\u003c','\u003e','\u0026'),
str_replace(“\”,“”,addslashes($var))。”;
    return '"'. str_replace(array("\r", "\n", "<", ">", "&"),
        array('\r', '\n', '\x3c', '\x3e', '\x26'),
        addslashes($var)) .'"';
    return '"'. str_replace(array("\r", "\n", "<", ">", "&"),
        array('\r', '\n', '\u003c', '\u003e', '\u0026'),
        str_replace("\'","'", addslashes($var))) .'"';