我有一个使用 GET 方法 ping 一系列 url 的脚本。我只想对它们每次 ping 一次并且不期望得到响应。我的脚本适用于 Chrome 和 Safari,但 Firefox 不会完成后面的请求。
有没有办法触发 Firefox 进行一系列调用(准确地说是五个),而不关心它们是否失败?当第一个请求失败时,Firefox 似乎不会完成这一系列请求。
我正在使用 javascript 和 jQuery,并添加了一些 jQuery.ajax()。我进行了搜索,但无济于事,并且已经达到了我初学者技能的极限。任何见解将不胜感激。
(如果您对完整范围感兴趣,请参阅基于 jquery 的独立端口敲击器的代码)
谢谢你。
更新:
经过进一步研究,我认为问题在于 Firefox 并没有真正异步处理调用。我的代码版本通过 img 调用、iframe url 调用和 ajax 调用在 Chrome 和 Safari 中工作,但在 Firefox 中它们的行为不像我需要的那样。
我们的服务器监控敲击序列应该会看到请求依次到达端口 1、2、3、4、5(就像使用 Chrome 或 Safari 时一样)但是在 Firefox 中,无论我尝试过哪种方法,我都会看到第一个尝试 ping 端口 1 两次,然后是端口 2,在随后的尝试中,我只看到它 ping 端口 1。我的状态更新按预期显示,但服务器没有按照它需要的顺序接收调用。似乎 Firefox 正在重试失败的调用,而不是按顺序执行每个调用一次,这是我需要它做的。
这是我使用简单 jquery.ajax 调用方法的脚本示例。它适用于 Safari 和 Chrome,但在 Firefox 中无法达到预期的效果。虽然我的所有代码都运行并且我可以看到状态更新(使用 jquery.append 函数生成),但请求不会每次都按顺序发送到我的服务器。
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('button').click(function(){
$('#knocks').append('<p>Knocking...</p>');
setTimeout(function(){
$.ajax({url: 'https://example.sample.com:1111'});
$('#knocks').append("<p>Knock 1 of 5 complete...</p>");
}, 500);
setTimeout(function(){
$.ajax({url: 'https://example.sample.com:2222'});
$('#knocks').append("<p>Knock 2 of 5 complete...</p>");
}, 3500);
setTimeout(function(){
$.ajax({url: 'https://example.sample.com:3333'});
$('#knocks').append("<p>Knock 3 of 5 complete...</p>");
}, 6500);
setTimeout(function(){
$.ajax({url: 'https://example.sample.com:4444'});
$('#knocks').append("<p>Knock 4 of 5 complete...</p>");
}, 9500)
setTimeout(function(){
$.ajax({url: 'https://example.sample.com:5555'});
$('#knocks').append("<p>Knock 5 of 5 complete...</p>");
}, 12000);
setTimeout(function(){
$('#knocks').append("<p>Knocking is complete... <br>Proceed to site: <a href='http://example-url.sample-url.com'>http://example-url.sample-url.com</a></p>");
}, 13000);
});
});
</script>