IE9兼容性:jQuery ajax发布请求

时间:2014-08-20 13:27:06

标签: javascript jquery ajax internet-explorer internet-explorer-9

我试图将表单从我的网站发布到服务器(不是同一个域)。 使用Chrome,Firefox和IE10 +,一切都运行良好,但我也必须使用IE9。

这是我的代码

$("#sendform").click(function() {

 // Content
  var infosForm = {};
        infosForm.firstname = $('input[name=firstname]')[0].value;
        infosForm.name = $('input[name=name]')[0].value;
        infosForm.phone = $('input[name=tel]')[0].value;
        infosForm.mail = $('input[name=mail]')[0].value;
        infosForm.commentaire = $('textarea[name=comment]')[0].value;
        var isChecked = $('.messageCheckbox:checked').val();
        if (isChecked == "on")
        {
            infosForm.isNewsletter = "on";
        }
        else
        {
            infosForm.isNewsletter = "off";
        }

     $.ajax({
      url:'http://my.website.com/form.ashx',
      type:'post',
      data:infosForm,
      cache:false, //normaly this is quite useless since it's a post, but It's known to help with IE... still not.
      crossDomain:true,

        //showing feedback          
success:function(){
  $("#contact form").hide(); 
  $("#contact form").fadeIn('slow').html("<p>Success</p>");
  //trackEvent();
      },
 error:function(){   
  $("#contact form").hide(); 
  $("#contact form").fadeIn('slow').html("<p>Error</p>");
      }
    });
});

根据提琴手的说法,IE9似乎没有发送任何请求并直接显示错误信息。

注意:这里使用的是jQuery 1.8.3。

2 个答案:

答案 0 :(得分:1)

IE8 / 9不支持jQuery使用的XmlHttpRequest对象,因此需要使用对象XDomainRequest。

这样的插件:xdr.js会让它发挥作用。

请注意XDomainRequest own limitations

答案 1 :(得分:-2)

在这一行

  

var isChecked = $('。messageCheckbox:checked')。val()

缺少分号(;)。