$.post()在Internet Explorer中无法工作

3
我的表单在Chrome和Firefox中发送非常完美,firebug中没有显示任何错误。然而,在IE中,表单无法发送。我已经将问题缩小到$.post()函数上,但是在IE中似乎根本没有被调用。回调函数可以工作,但不会调用php文件。
我在这里创建了一个fiddle - 删除以防止垃圾邮件 - 在提供的字段中输入您自己的电子邮件地址。提交表单将向您发送确认电子邮件。这个fiddle在Chrome和Firefox中可以工作,但在IE中无法工作。
我已经阅读了类似问题的答案,但没有解决我的问题。
简而言之,为什么$.post()函数在IE中不起作用?
我在.js文件中的代码行:
var formData = $('#promo-form').serialize();
$.post('http://dynamic.lotterywest.wa.gov.au/promo-order/order.php', formData).always(formSent);

在我的IE10浏览器上运行良好。 - Grant Thomas
IE9或更低版本。我没有IE10,我们网站的大多数用户使用的是IE9或更低版本。 - lukeocom
我认为你在使用serialize()时遇到了问题。 - Abraham K
@Kees和Grant,这个类似直播的版本对你们也有效吗?http://www.lotterywest.wa.gov.au/grants/after-approval/sharing-the-good-news/order-promotional-materials/promoform/promoOrderForm - lukeocom
@ABÅttìtúðêÞêrfëçt - 我移除了序列化变量,但在IE中仍然没有成功。 - lukeocom
显示剩余4条评论
2个回答

2

如果你正在使用always功能,回调函数无论你的ajax请求成功或失败都会触发。请参见文档

从你的POST请求目标来看,你的ajax调用似乎是跨域调用。因此,请在Chrome检查器或Firebug控制台中查找更多信息。 $.ajax具有crossdomain设置,这将使你在Firefox和Chrome上运行,但在不支持XMLHttpRequest对象的IE浏览器上仍将失败。

因此,只是因为你在always部分给出的回调被触发,并不能确认ajax请求是否成功。


是的,我知道。我必须使用.always来解决我在CMS/框架中遇到的一个错误。 - lukeocom
@lukeocom:你是怎么说它在Firefox和Chrome上运行的?你确定Ajax请求成功了吗? - Mithun Satheesh
不,你可能是对的,这就解释了为什么我需要使用.always。问题是生产服务器没有php,所以我必须从另一个服务器提供php。在FFox或Chrome中提交时,我没有收到任何错误或警告... - lukeocom
1
我的天啊!!!那你为什么不能把这些都托管在你托管 PHP 的服务器上呢? - Mithun Satheesh
哈哈,那样做太傻了。计划是用Python重新编写脚本。 - lukeocom
显示剩余2条评论

-1

试试这样

$('#promo-form').live("submit",(function(){
            forma = $(this);
            serial = $(forma).serialize();
...../
});

它会起作用的,或者问题是IE安全限制,并添加json到POST。

$.support.cors = true; //  cross-site scripting
        $.ajaxSetup({ cache: false });          

        var request = $.ajax({
            type: "POST",
            url: $("#YOUR FORM").attr("action"),
            data: $("#YOUR FORM").serialize(),
            sync: false,
            dataType: 'jsonp',
            crossDomain: true        
        });

$.support.cors = true; // 跨站脚本攻击这将覆盖jQuery在浏览器中检测CORS支持的功能。在不支持CORS的浏览器中,最好情况下会使事情变得更加糟糕。 - Quentin
同步:false,您拼错了“异步”。 - Quentin
数据类型:'jsonp',JSONP 不兼容同步请求和 POST 请求。 - Quentin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接