1

我有一个 JQuery/Ajax 更新。它在所有主要浏览器中都能正确更新,但是,处理错误响应在任何版本的 IE 中都不起作用。

下面是ajax提交代码:

    $('.ajax_multi_submit').click(function (event) {
        // if javascript is enabled, stop default post
        event.preventDefault();

        // get the id assigned to this form. This id will
        // be added to every id to used in processing
        var element = $(this);
        var Id = element.attr("id");
        var formUrl = $('#ajax_multi_form' + Id).attr('action');

        $.ajax({
            url: formUrl,
            type: "POST",
            dataType: "html",
            data: $('#ajax_multi_form' + Id).serialize(),
            beforeSend: function () {
                showAjaxMultiBusy(Id);
            },
            complete: function () {},
            success: function (html) {
                processAjaxMultiForm(html, Id);
            }
        });
    });

同样,我认为问题不在这里,因为所有浏览器都正确发布更新。但是,使用此代码处理结果时:

    function processAjaxMultiForm(html, Id) {
        $('#ajax_errors' + Id).hide('slow');
        window.setTimeout(function () {
            $('#ajax_busy' + Id).hide('slow');
            if (parseFloat(html)) {
                $('#ajax_message' + Id).html('Record Saved.').show('normal');
                $('#ajax_message' + Id).hide('slow');
            } else {
                $('#ajax_errors' + Id).html(html).show('slow');
            }
        }, 1500);
    }

当返回错误字符串而不是整数 ( parseFloat(html) = "some string..." ) 时,FF 和 Safari 会在 "else" 条件下正确显示错误。

IE 将始终显示“if”条件,无论返回值如何(1=成功,字符串=错误)。

我认为那里的一些天才会立即发现问题?

编辑-------这里有更多信息。我在脚本中添加了一个控制台日志以输出 html 变量。我得到一个正确的错误字符串,成功时得到一个“1”。我已根据以下建议将代码更新为:

function processAjaxMultiForm(html, Id) {
    $('#ajax_errors' + Id).hide('slow');
    window.setTimeout(function () {
        $('#ajax_busy' + Id).hide('slow');
        console.log("html is: " + html);
        if (isNaN(html)) {
            $('#ajax_errors' + Id).html(html).show('slow');
        } else {
            $('#ajax_message' + Id).html('Record Saved.').show('normal');
            $('#ajax_message' + Id).hide('slow');
        }
    }, 1500);
}

和以前一样,在 FF Safari 中按预期工作,但 IE 将字符串(错误)和整数(成功)都评估为“成功”

4

2 回答 2

1

isNan应该可以工作。

于 2009-08-16T21:24:51.073 回答
1

试试 (isNan(parseFloat(html)) 怎么样?

编辑:

或者,您为什么不返回“成功”以帮助澄清。

于 2009-08-16T22:25:01.943 回答