我正在尝试整合MailChimps'标准的html表单进入我的网站。但是,我的网站有一些jquery代码遇到了MailChimp代码的问题。
以下代码是MailChimp嵌入表单的一部分:
<script type='text/javascript' src='//s3.amazonaws.com/downloads.mailchimp.com/js/mc- validate.js'></script>
<script type='text/javascript'>
(function($) {
window.fnames = new Array(); window.ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';
}(jQuery));
var $mcj = jQuery.noConflict(true);
</script>
&#39; .... mailchimp.com/js/mc-validate.js'与我的Google API for jquery冲突,所以我拿出了mailchimp的jquery激活。
我的问题是:
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js'> </script>
?
$mcj=jQuery.noConflict(true)
代码。基本问题是:有没有人有将Mail Chimp集成到他们的网站并使用jQuery遇到这类问题的经验?
期待您的回答。
答案 0 :(得分:1)
你可以在你的程序中使用这段代码
<script type='text/javascript' src='//s3.amazonaws.com/downloads.mailchimp.com/js/mc- validate.js'></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type='text/javascript'>
(function($) {
window.fnames = new Array();
window.ftypes = new Array();
fnames[0]= 'EMAIL';ftypes[0]='email';
fnames[1]='FNAME';ftypes[1]='text';
fnames[2]='LNAME';ftypes[2]='text';
}());
var $mcj = $.noConflict(true);
</script>
答案 1 :(得分:0)
我知道自从你提出这个问题已经有3个月了,但是如果其他人有同样的问题,还会有解释。
在回复下面的评论时,我创建了一个简单的html示例,其中包含指定的jquery版本和经典的mailchimp表单。如您所见,没有抛出任何错误。 (http://thepixel.ninja/lab/mailchimp-signup-form/)。
您收到的错误很可能是页面上某些其他脚本的原因。如果没有你的更多信息,我们无法说出来。
如果你不太了解调试和对可能发生的事情的解释,这里有一些简单修复的细分。
- 我必须在.html代码中使用mailchimp /mc-validate.js行来运行表单,还是可以依赖
醇>&lt; script src =&#39; http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js&#39;&gt;?
这是两个不同的脚本。一个是jQuery自己,一个是mailchimp验证代码。如果您从mailchimp完成了需要js验证,则不需要/mc-validate.js行。如果这是演员表,请按照以下说明操作。不要只是删除这一行,希望一切都会好的。
NB。如果您不需要验证码,那么您可以勾选&#34;禁用所有JavaScript&#34;在mailchimp网站上创建表单时复选框。这将消除所有js错误。 (您也可以选择&#34;裸体形式&#34;而不是&#34;经典形式&#34;然后使用css设置表单样式以查找您想要的内容。
- 如果我确实删除了本机mailchimp jquery行并依赖于 googleapi一行,我遇到了问题 $ mcj = jQuery.noConflict(true)code。
醇>
如上所述。它们是两个不同的脚本。你不能删除一个并依赖另一个,因为他们做了完全不同的事情。
所有这一切,mailchimp脚本不应该以任何方式与jquery冲突。我已经使用了mailchimp表单和jquery数百次,从来没有遇到过问题。 (请参阅上面的链接)如果您以任何方式编辑了提供给您的mailchimp html代码段,或者您在页面上包含的其他JavaScript中有其他错误,则可能发生此问题。
希望这有助于某人通过消除过程找出他们遇到的问题。
答案 2 :(得分:0)
所以,如果你像我一样,你可能不需要在每一页都有Mailchimp。这个例子假设您在需要时通过jQuery加载它,但是这个想法仍适用于与页面加载一起加载它:
var tmp = jQuery.noConflict(); //This jQuery is the one we want
jQuery.getScript("//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js", function(){
(function($) {window.fnames = new Array(); window.ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';fnames[3]='CGROUP';ftypes[3]='dropdown';}(jQuery));
//Let mailchimp set its own jQuery, destroying window.jQuery
var $mcj = jQuery.noConflict(true);
//Now, restore the copy of jQuery we saved
window.jQuery = tmp.noConflict();
//At this point, things should be as they were before we loaded mailchimp
});
为了回答其他一些用户的问题,他们有这条线的原因是Mailchimp期待一个特定版本的jQuery(截至目前为1.9.0)。另外,比方说,在您的示例中,我们使用的是缓动插件。这会修改window.jQuery,但是Mailchimp会加载一个不同的版本的jQuery,它不会有任何你一直添加到页面上的插件。我相信他们最初的想法是每个人都会首先加载他们的脚本(这是一个可接受的替代解决方案)。但是,这种方法的问题是我们从最佳实践中知道外部站点的JS应该最后加载,而不是首先加载