3

我的表单在 Chrome 和 Firefox 中发送得非常好,在 firebug 中没有显示错误。但是,在 IE 中,表单无法发送。我已将其缩小到$.post()函数,它似乎在 IE 中没有被调用。回调函数有效,对 php 文件的调用无效。

我在这里创建了一个小提琴 -删除以防止垃圾邮件- 在提供的字段中输入您自己的电子邮件地址。提交表格将向您发送一封确认电子邮件。这个小提琴适用于 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);
4

2 回答 2

2

如果您使用 always 实用程序,无论您的 ajax 请求是成功还是错误,都会触发回调。请参阅文档

形成您的发布请求目标,您的 ajax 调用似乎是一个跨域调用。因此,请查看 chrome-inspctor 或 firbug 控制台以获取更多信息。$.ajaxcrossdomain一些设置可以让你继续使用 Firefox 和 chrome,但它仍然会在不支持 XMLHttpRequest 对象的 IE 浏览器上失败。

因此,仅仅因为always part触发了您给出的回调,您无法确认 ajax 请求是否成功。

于 2013-05-29T07:41:31.363 回答
-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        
        });
于 2013-05-29T07:39:46.597 回答