2010-08-22 24 views
6

Tôi đã có thời gian AWFUL tích hợp MailChimp vào một trang web tôi đang thiết kế!MailChimp jQuery Conflict

Sự cố là xác thực không hoạt động đối với biểu mẫu đăng ký được nhúng. Thay vì nội tuyến các thông báo lỗi, biểu mẫu đang đưa người dùng đến trang đăng ký MailChimp để sửa lỗi hoặc xác nhận danh sách chọn tham gia.

Tôi đã thực hiện một số lượng lớn tùy chỉnh cho mã, vì vậy rất tiếc sẽ quay lại mặc định không phải là một tùy chọn.

Dưới đây là những sai lầm tôi nhận được, nhưng tôi là một n00b JS vì vậy tôi không biết ý nghĩa của chúng:

Nghỉ giải lao trên Lỗi mce_jQuery không được định nghĩa:

Screen shot 2010-08-22 at 4.34.50 AM.jpg

Tôi không nghĩ rằng đó là một lỗi có thể được bắt gặp với giao diện điều khiển mặc dù.

Điều kỳ lạ là điều này. Nếu tôi trích xuất mã tùy chỉnh và chỉ đăng mã tĩnh từ MailChimp thì nó hoạt động, nhưng tôi đã sao chép tất cả các mã có liên quan với các chức năng quan trọng và vẫn không có con xúc xắc.

Bạn có thể xem trang web sống tại địa chỉ: http://ranya.net/wp/contact

Danh sách MailChimp đăng ký là ở góc phải trượt thả xuống đầu. Các tập lệnh có liên quan được nhúng ngay sau div # top_mailing.

Trả lời

1

Alec Smart đã gần như chính xác. Bằng cách chạy jQuery trong chế độ NoConflict, vấn đề đã được giải quyết. Alec gợi ý rằng tôi thêm jQuery.noConflict(); trong tiêu đề của tài liệu. Nó chỉ ra rằng có một dòng trong mã nhúng MailChimp được nhận xét. Để kích hoạt đúng chế độ noConflict cho việc tìm kiếm kịch bản MailChimp cho

//var mce_jQuery = jQuery.noConflict(); 

Tháo comment để nó trông như thế này

var mce_jQuery = jQuery.noConflict(); 

và sau đó bạn sẽ được tốt để đi! :)

1

Cố gắng di chuyển mã này sang phải ở phía trên (như ngay lập tức sau khi <head> tag): Câu trả lời

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script> 
<script>jQuery.noConflict();</script> 
<script type="text/javascript" src="http://downloads.mailchimp.com/js/jquery.validate.js"></script> 
<script type="text/javascript" src="http://downloads.mailchimp.com/js/jquery.form.js"></script> 
+0

Thử tốt, nhưng không, sau khi di chuyển, nó vẫn không thực hiện xác thực nội tuyến: ( – Brian

+0

Bạn đang tải 2 phiên bản jQuery trong mã của mình. Bạn có chắc chắn muốn làm điều đó không? –

+0

Bạn đã gần như chính xác Alec Xem câu trả lời của tôi dưới đây để giải quyết :) – Brian

3

Hoặc bạn có thể chỉ đơn giản là chỉ cần đổi tên biến này trong mailChimp.js:

var mce_jQuery = jQuery.noConflict(); 

để

var mce_jQuery = jQuery; 

Không biết lý do tại sao các nhà phát triển MailChimp đã quyết định viết lại với đồng đô la-dấu với một phương pháp.

2

Sử dụng jquery 1.8.1 và mã MailChimp mới nhất của 28 thể 2013

tôi không thể tìm thấy những nhận xét trên để bỏ ghi chú nó.

Tôi tuy nhiên có thể xem mã MailChimp này:

function mce_init_form(){ 
jQuery(document).ready(function($) { 

hiểu biết của tôi về điều này là không lớn nhưng điều này lại giao cho jquery mặc định $ biến.

Tuy nhiên, sau đó trong các mã đã có này:

function mce_success_cb(resp){ 
$('#mce-success-response').hide() 

được vấp ngã mã MailChimp lên

tôi đã thay đổi nó để

function mce_success_cb(resp){ 
jQuery(document).ready(function($) { 
$('#mce-success-response').hide(); 

và nó hoạt động. Không hoàn toàn chắc chắn lý do tại sao (và sẽ thích một lời giải thích!) Nhưng tôi nghĩ rằng tôi sẽ đăng bài như một người nào đó có thể đi qua câu hỏi này trong cùng một cách như tôi đã làm.

+0

Giải pháp của bạn đã làm việc cho tôi. – Anthony

+0

Tuyệt vời! Vui vì nó đã giúp – user1010892

+0

Bạn có thêm một khung đóng vào dòng mới '' jQuery (tài liệu) .ready (function ($) {''? Nếu vậy, ở đâu? – novicePrgrmr

2

Tôi không có may mắn với bất kỳ giải pháp nào ở trên, có thể vì câu trả lời cuối cùng đã hơn một năm và không phản ánh mã mailchimp hiện tại nữa.

Để giải quyết xung đột jQuery của tôi, tôi đã sao chép tập lệnh mc-validate.js mà MailChimp phục vụ từ http://s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js và đặt nó trên máy chủ của riêng chúng tôi. Sau đó, tôi làm đẹp nó và loại bỏ mã jquery khỏi tập tin. Bằng cách đó, bây giờ chỉ có phiên bản jquery của chúng tôi còn lại trên máy chủ của chúng tôi và không có gì xung đột nữa.

Có vẻ như bạn cũng sẽ không cần dòng var $mcj = jQuery.noConflict(true); nữa.

@mailchimp: giải pháp tuyệt vời cho vấn đề này là nếu bạn chỉ có thể cung cấp một phiên bản mã khác trên máy chủ amazon của mình, không bao gồm jquery.

Các vấn đề liên quan