Ajax没有在IE中加载

时间:2012-12-01 14:21:42

标签: javascript ajax internet-explorer jquery

这是脚本。它适用于所有其他浏览器,所以我认为这是一个缓存问题但不是真的。我一直在敲头几个小时,没有任何工作。

$.ajaxSetup({
    cache: false
});

$("#send").live('click', function () {
    console.log("AAAAA");
    $("#loader").show();
    $form = $('#reservationForm');

    $inputs = $form.find('input[name^="entry"]'),
    serializedData = $('#reservationForm :input[name^="entry"]').serialize();

    console.log(serializedData);
    serializedData += "&pageNumber=0&backupCache=1&submit=Submit";

    // fire off the request to /form.php
    $.ajax({
        url: "https://docs.google.com/spreadsheet/formResponse?formkey=d",
        // url: "https://docs.google.com/spreadsheet/formResponse?formkey=d;ifq",
        type: "post",
        data: serializedData,
        // callback handler that will be called on success
        success: function (response, textStatus, jqXHR) {
            // log a message to the console
            console.log("Hooray, it worked!");
            $("#loader").hide();
            document.getElementById('error<?php echo"$uname";?>').innerHTML = error;
            $("#success").fadeIn();
            setTimeout(function () {
                $("#success").fadeOut();
            }, 5000);
        },
        // callback handler that will be called on error
        error: function (jqXHR, textStatus, errorThrown) {
            // log the error to the console
            console.log("The following error occured: " + textStatus, errorThrown);
            alert('Due to an unknown error, your form was not submitted, please resubmit it or try later.');
        },
        // callback handler that will be called on completion
        // which means, either on success or error
        complete: function () {
            // enable the inputs
            $inputs.removeAttr("disabled");
        }
    });

    // prevent default posting of form
    event.preventDefault();

});

3 个答案:

答案 0 :(得分:2)

在IE中打开开发人员工具(F12打开)后,可以使用console.log。尝试将其打开或在代码中使用警报。 或使用try catch;

try{
    console.log('worked')
}
catch(err){
}

您可能想要检查您的事件变量是否未定义:

event= event || window.event;
event.preventDefault();

答案 1 :(得分:0)

在脚本的开头,您没有在处理程序中添加“event”声明:

$("#send").live('click', function () {

应该是:

$("#send").live('click', function (e) {

在脚本的末尾有一个变量事件的引用:

 // prevent default posting of form
event.preventDefault();

我认为IE在全局事件对象(您正在引用)中没有'preventDefualt'函数:此函数被添加到jQuery传递的“e”事件对象中。无论如何,在“未定义事件”的所有其他浏览器中它也应该失败。试试这个:

 // prevent default posting of form
e.preventDefault();

另外需要注意的是:jQuery团队目前不鼓励使用“实时”事件绑定功能,而应该使用等效形式的“on”功能。

答案 2 :(得分:0)

IE无法理解ajax中响应的内容类型。所以把你的dataType值放在请求中它应该工作。 例如 -

dataType: ($.browser.msie) ? "text" : "xml"