retry jquery ajax on failure
我对控制器中的动作进行了jquery-ajax调用。 有时呼叫失败,所以我想再次重试。
jQuery的AJAX:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | return ajax({ url: getRootDir() + urlDoTask, // urlDoTask is something like"/Action/" data: { param: someParam }, type: 'POST', dataType: 'json', tryCount: 0, retryLimit: 3 }).then(function (data) { // Do some stuff return .... }, function (xhr, textStatus, errorThrown) { if (textStatus == 'timeout' || (xhr.responseText =="" && textStatus == 'error')) { this.tryCount++; // this is always 1 if (this.tryCount <= this.retryLimit) { //try again $.ajax(this); return; } return; // this point is never reached } if (xhr.status == 404) { // Do some stuff } return ... // I want to reach it after this.tryCount > this.retryLimit }); function getRootDir() { var loc = window.location.pathname; var dir = loc.substring(0, loc.lastIndexOf('/')); return dir; } |
上面的代码不起作用,每次ajax-call失败时tryCount总是1。 此外,一旦this.tryCount大于this.retryLimit,就永远不会达到最后一次返回。
想法?
我看到的东西很少。 传入的参数实际上不是对象的成员。 它只是一个密钥/对的JSON映射。 因此函数中不存在"this.tryCount"之类的东西。 您可以做的是在您的函数(或调试)中放置警报,并查看值是什么。 可能他们是未定义或0。