ajax请求遇到服务器重启或中断
常会有不断轮询发送ajax请求,处理一些业务的场景。
要考虑到:
1. 服务器重启,中断,恢复后仍然能恢复正常业务处理。
服务器重启过程中,再次发送请求,请求状态将变为net::ERR_CONNECTION_REFUSED,ajax依然会执行到success逻辑层,拿到的响应是null。
想当然的认为ajax会执行到error逻辑层是不正确的,因此写代码的时候要格外注意这一点。
1 var progress_polling_ajax = function () { 2 var time_interval = 3000; 3 4 jQuery.ajax({ 5 url: "/system/ajax_get_progress/", 6 method: "POST" 7 dataType: "json", 8 success: function (data) { 9 try { 10 if (data) { 11 //业务处理 12 } else { 13 setTimeout(progress_polling_ajax, time_interval); 14 } 15 16 } catch (e) { 17 setTimeout(progress_polling_ajax, time_interval); 18 } 19 }, 20 error: { 21 setTimeout(progress_polling_ajax, time_interval); 22 } 23 24 }); 25 26 };