JqueryUi对话框给出未捕获的TypeError:This._addClass不是函数错误

时间:2018-11-13 作者:GideonBright

我有一个网站,我们需要一些自定义php编码来连接到外部数据库,以获取几个销售我们产品的供应商的产品评论URL。我们试图实现的基本想法是让用户注册他们的产品,然后如果他们愿意留下评论,就延长保修期。我正在使用XYZScript。com的“插入PHP”插件来实现这一点。该主题最初只加载了jQuery,以避免创建子主题,我们正在php脚本中加载jQueryUI。因此,我们将jQuery加载到文档的标题中,将jQueryUI加载到文档的正文中。我不太确定这是因为加载脚本的顺序造成的,还是其他一些冲突的javascript导致了错误。您可以在下图中看到错误。

Chrome\'s Console Output On Calling The Dialog

Console Error

Relevant Code

<script>
jQuery.ajax({
    type: \'GET\',
    url: "<?=$ajax_handler?>?method=check_warranty&model="+model,
    success: function(response) {
        if (response == \'\')
            duration = \'6\';
        else
            duration = response;

        jQuery(\'#warranty_length\').val(duration);

        jQuery(\'#warranty_dialog\').dialog({
            width:\'700px\',
            height:\'408px\',
            position:\'absolute\',
            top:\'300px\'
        }).html("HTML TO DISPLAY REVIEW LINK BUTTON");
        jQuery(\'.titlebar-close\').hide();
    }
});
</script>
正如您所看到的,代码非常简单。用户填写完表单后,我进行了一个ajax调用,该调用使用模型和供应商查询我们的数据库,以获取该产品的适当审查链接,然后创建指向该供应商和模型的审查页面的链接。

我试图确定错误是否由以下三种原因之一引起。

订单jQuery有问题;正在加载jQueryUI

http://www.kriegermfg.com/register-test/

任何帮助都将不胜感激。

Edit让我们进一步了解一下,这是jQueryUI的失败之处。

enter image description here

3 个回复
SO网友:firxworx

您的JS看起来是内联编写的,而不是在自己的JS文件中编写的,或者至少是自己排队的。换句话说,它看起来不像是在WordPress上正确加载的。

注意WP功能wp_enqueue_script() 有一个依赖项参数,可以在其中传递脚本句柄数组(通过wp_register_script()). 此函数的参数有助于确保在所需位置(页眉与页脚)和所需顺序加载页眉+页脚脚本。

文档:

https://developer.wordpress.org/reference/functions/wp_enqueue_script/ https://developer.wordpress.org/reference/functions/wp_register_script/

在JS本身中,使用$( document ).ready():

http://learn.jquery.com/using-jquery-core/document-ready/

在加载JQuery UI之前,您的代码位于标记中,这是一个需要解决的潜在问题。如果它在自己的文件中,并且在主题的函数中正确排队。php(或通过站点插件),然后它可以将JQuery UI的句柄指定为依赖项,WordPress将始终在之后加载它。

如果你仍然有问题,我也会禁用你的其他插件+你扔进去的任何其他JS片段(暂时),看看你是否可以让它工作。如果是这样的话,您可以让他们一个接一个地识别罪犯。

看起来联系人表单7和您的主题/插件都在加载JQuery UI,并且都依赖于日期选择器等。联系人表单7的核心是在JQuery UI之前加载(之后加载其他JQuery UI依赖项),但我对该插件没有足够的经验,无法立即知道这是否是潜在的问题来源(这也可能是需要研究的)。

SO网友:kub1x

我在这里调试我的WP安装上的相同错误。之前的答案是针对插件/主题开发人员的,所以作为一名管理员,我需要一种稍微不同的方法。我必须自己找出问题的根源。

据我所知here 我在我的config.php 获取Javascript源的未统一版本。

define(\'SCRIPT_DEBUG\', true);
TL;DR 在浏览器中,我发现文件失败,因为sotrtable.js. 然后我去了我的托管服务器,在wordpress根目录中使用the silver searcher: ag -l sortable. 在那里我注意到wp-content/themes/OurCustomTheme/functions.php 有一个电话wp_enqueue_script(\'jquery-ui\', \'//code.jquery.com/ui/1.11.4/jquery-ui.js\', array(), \'20120206\') 拉取的固定版本jQuery ui 来自CDN。我将其替换为wp_enqueue_script(\'jquery-ui-core\') 它是WordPress安装附带的lib的当前版本,并导入到wp-includes/script-loader.php.

我描述整个问题是为了向其他人展示,当他们遇到这样的Javascript异常时,他们前面会有什么样的解决过程caused by theme or plugin pulling incorrect version of some JS sources and overriding the correct one.

SO网友:Said Erraoudy

这个jQuery Migrate Helper 修复了它。稍后,我将对导致问题的插件进行故障排除。

结束

相关推荐

从外部PHP应用程序访问WordPress数据。

我是一个非营利组织的志愿者。我已经接管了许多用PHP/SQL/Dreamweaver编写的应用程序的维护工作。这些应用已经有10多年的历史了。我正在将这些应用程序从PHP/SQL迁移到Wordpress插件。我现在使用Wordpress进行身份验证,并设置一个旧系统可以识别的cookie。遗留系统的某些功能需要访问用户列表。目前,我需要在两个系统中维护用户。我想使用Wordpress REST API访问Wordpress中的用户信息。(所有角色为讲师的用户。)我找到的所有访问Wordpress REST