Problèmes de soumission de formulaires interdomaines avec jQuery ajax avec IE

J’ai un problème avec IE, grosse surprise, non? J’ai un formulaire Web qui envoie le nom, le téléphone et un courrier électronique à un script situé sous un autre domaine. Je suis jquery.ajax pour soumettre le formulaire. J’utilise également jquery.validate pour la validation du formulaire. Votre nom et e-mail sont nécessaires. le téléphone est facultatif.

Lorsque je soumets le formulaire en Chrome, cela fonctionne parfaitement. Je reçois mon email de remerciement et mes données parviennent au script de l’autre domaine.

Lorsque j’essaie le même formulaire dans IE9, je remplis tous les champs et je clique sur Soumettre. Le résultat est comme s’il avait été envoyé (je reçois le message de remerciement où se trouve le formulaire), mais aucune des données ne parvient au service et je ne le fais pas. t recevoir un email de confirmation soit – donc ce n’est pas réellement poster.

Alors, comment puis-je obtenir ce script pour fonctionner dans IE7,8,9. Voici le script tel qu’il est en ce moment … Lorsque je supprime le commentaire de l’alerte dans l’action de succès, je reçois l’alerte dans IE. C’est juste ne pas poster les données. J’ai lu de nombreux articles à ce sujet, mais je ne rassemble pas tous les éléments ici de manière compréhensive.

J’entends dire que cela fonctionne tout de suite avec IE10.

jQuery.validator.setDefaults({ submitHandler: function() { var cons_info_component = jQuery("#cons_info_component").val(); var cons_mail_opt_in = jQuery("#cons_mail_opt_in").val(); var longnum = jQuery("#1540_6383_2_8347_1").val(); var survey_id = jQuery("#SURVEY_ID").val(); var cons_email_opt_in = jQuery("#cons_email_opt_in").val(); var cons_email_opt_in_requested = jQuery("#cons_email_opt_in_requested").val(); var cons_first_name = jQuery("input#cons_first_name").val(); var cons_last_name = jQuery("input#cons_last_name").val(); var cons_email = jQuery("input#cons_email").val(); var cons_phone = jQuery("input#cons_phone").val(); if(cons_phone === "PHONE NUMBER (OPTIONAL)") { cons_phone = ''; } var ACTION_SUBMIT_SURVEY_RESPONSE = jQuery("#ACTION_SUBMIT_SURVEY_RESPONSE").val(); var dataSsortingng = 'cons_info_component='+cons_info_component+'&cons_mail_opt_in='+cons_mail_opt_in+'&1540_6383_2_8347='+longnum+'&SURVEY_ID='+survey_id+'&cons_first_name='+cons_first_name+'&cons_last_name='+cons_last_name+'&cons_email='+cons_email+'&cons_phone='+cons_phone+'&cons_email_opt_in='+cons_email_opt_in+'&cons_email_opt_in_requested='+cons_email_opt_in_requested+'&ACTION_SUBMIT_SURVEY_RESPONSE='+ACTION_SUBMIT_SURVEY_RESPONSE; jQuery.ajax({ type: "POST", url: "http://urlthatIsubmittoo.com/script/", crossDomain: true, cache: false, data: dataSsortingng, statusCode: { 404: function() { //alert('page not found'); }, 200: function() { //alert('success'); } }, success: function() { //alert('submited'); }, complete: function() { jQuery('div.convioform').html("
"); jQuery('div.convioform .tybox').html("
Thank You

You'll soon be receiving our e-mails and updates now.

"); } }); // close .ajax line }, });

Insérez ceci en haut de votre fichier (via github / jaubourg):

 if ( window.XDomainRequest ) { jQuery.ajaxTransport(function( s ) { if ( s.crossDomain && s.async ) { if ( s.timeout ) { s.xdrTimeout = s.timeout; delete s.timeout; } var xdr; return { send: function( _, complete ) { function callback( status, statusText, responses, responseHeaders ) { xdr.onload = xdr.onerror = xdr.ontimeout = jQuery.noop; xdr = undefined; complete( status, statusText, responses, responseHeaders ); } xdr = new XDomainRequest(); xdr.onload = function() { callback( 200, "OK", { text: xdr.responseText }, "Content-Type: " + xdr.contentType ); }; xdr.onerror = function() { callback( 404, "Not Found" ); }; xdr.onprogress = jQuery.noop; xdr.ontimeout = function() { callback( 0, "timeout" ); }; xdr.timeout = s.xdrTimeout || Number.MAX_VALUE; xdr.open( s.type, s.url ); xdr.send( ( s.hasContent && s.data ) || null ); }, abort: function() { if ( xdr ) { xdr.onerror = jQuery.noop; xdr.abort(); } } }; } }); }