Jquery / AJAX响应 - 在FF / Safari中工作但不是IE parseFloat(html)问题?

时间:2009-08-16 21:05:53

标签: jquery ajax internet-explorer response

我有一个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将字符串(错误)和整数(成功)评估为“成功”

2 个答案:

答案 0 :(得分:1)

isNan应该有用。

答案 1 :(得分:1)

如何尝试(isNan(parseFloat(html))。

编辑:

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