3

这是脚本。它在所有其他浏览器中都可以正常工作,所以我认为这是一个缓存问题,但不是真的。我已经敲了几个小时的头,但没有任何效果。

$.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();

});
4

3 回答 3

2

在 IE 中打开开发者工具(F12 打开)后,console.log 可用。尝试打开它或在您的代码中使用警报。或使用 try catch;

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

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

event= event || window.event;
event.preventDefault();
于 2012-12-01T14:41:35.523 回答
0

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

$("#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 团队目前不鼓励使用“live”事件绑定函数,而是应该使用“on”函数的等效形式。

于 2012-12-01T15:03:24.850 回答
0

IE 不理解 ajax 中响应的内容类型。因此,将您的 dataType 值放入请求中,它应该可以工作。例如 -

dataType: ($.browser.msie) ? "text" : "xml"
于 2012-12-01T15:04:03.387 回答