在jQuery load事件处理程序中获取statusCode

时间:2014-10-10 08:27:53

标签: jquery ajax http-status-codes

我正在使用jQuery ajax事件'加载':

标记代码:

<iframe id="my_iframe" src="http://somewhere"></iframe>

jQuery代码:

$(function() {
    $('#my_frame').load(function(statusCode) {
        // The content loaded here maybe 404/500 or other.
        if(statusCode == 400) {
            // do something.
        } else {
            // do something else.
        }
    });
});

问题

我想在我的加载事件回调中获取状态代码。也许得到jqXHR对象来实现?

这可能吗?


更多,我可以手动更改iframe的src属性,这也会触发load事件,似乎这不是ajax调用。

2 个答案:

答案 0 :(得分:2)

首先,使用 iframe 通常不是最佳做法。您应该只需使用<div>元素即可完成所有要求。

<强> HTML:

<div id="dynamicPage">
    Loading...
</div>

<强> JavaScript的:

$("#dynamicPage").load(
"http://somewhere",
function(response, status, xhr) {
    if (status == "success") {
        // SUCCESSFUL request //

    } else if (status == "error" || status == "timeout") {
        // ERROR and TIMEOUT request //

        var msg = "Sorry! An error has occurred. Please try again later";
        $("#dynamicPage").html(msg);

    } else if (status == "notmodified") {
        // NOT MODIFIED request (likely cached) //

    } else if (status == "abort") {
        // ABORTED request //

    }
});

仔细阅读其他一些关于这个问题的建议。另一篇文章甚至没有使用jQuery.load()并且误导了#34; success:&#34; as&#34; sucess.&#34;

作为奖励款待(如果您可能感兴趣),您可以轻松调整上面的代码以使用加载动画。

参考: Basic jQuery animation: Elipsis (three sequential dots)

答案 1 :(得分:0)

我会说你正在寻找这样的东西:

$.get({
    'url': 'your-url',
    sucess: function(response, status, xhr) {
        //do something

        //Change the iframe content by src while having xhr availible
        $('#my_frame').attr('src', 'new-url');
        //Change the iframe content by appending your own HTML while having xhr availible
        $('#my_frame').contents().append('<div>New HTML</div>');

    },
    error: function (response, status, xhr) {
        //do something
    }
});