没有互联网连接的ajax后备

时间:2017-10-20 14:05:03

标签: javascript jquery html ajax local-storage

以下代码将数据提交给服务器。在提交给服务器之前,数据实际存储在localStorage中。这是因为我要求用户能够在没有互联网连接的情况下使用我的系统。

问题在于,当没有互联网连接时,显然它无法将数据发布到服务器。在这种情况下我该怎么办?

$('#btnSync').on('click', function(e) {
    var my_data = {};
    var my_value = [];

    for ( var i = 0, len = localStorage.length; i < len; ++i ) {
        if((localStorage.key( i ).includes('set'))){
            var lsItems = JSON.parse(localStorage.getItem( localStorage.key( i ) ));

            allItems[localStorage.key( i )] = lsItems;
        }
    }

    $.ajax({
        url: "action.php",
        type: "POST",
        data: {'action':'btnSync','allItems':allItems},
        dataType: "json",
        success: function(data) {
            $.notify(
                {
                    message: data.message
                },
                {
                    type: data.status,
                    placement: {
                        from: "top",
                        align: "left"
                    },
                    newest_on_top: true,
                    delay: 0
                }
            );
        },
        error: function(data){
            $.notify(
                {
                    message: 'Unexpected error occured, please kindly contact System Administrator'
                },
                {
                    type: 'danger',
                    placement: {
                        from: "top",
                        align: "left"
                    },
                    newest_on_top: true,
                    delay: 0
                }
            );
        }
    });
});

1 个答案:

答案 0 :(得分:1)

您可以使用类似的ajax调用来检查连接/服务器是否正常运行。寻找

statusCode.status == 0

出错并向用户提供目的地无法访问/互联网通知。您可以将此ajax调用创建为函数中的promise,并在所有ajax调用之前使用它,并要求用户连接到Internet然后重试。