为什么ping我自己的服务器这么难?

时间:2014-07-27 15:17:09

标签: javascript

我得到了这块蛋糕的功能:

$.ajax({
    url: 'Example.html',
    DataType: 'text',
    cache: false,
    success: function (){
        alert ('Yes');
    },
    error: function (){
        alert ('No');
    }
});

这个功能,工作正常,但仅限第一次),从第二次开始,该功能将以下错误发送给Chrome:

获取http://MyServer.com/Example.html?_=1406469092100 net :: ERR_FAILED

同样的情况与第二个JS选项同样发生:

function doesConnectionExist() {

    var xhr = new XMLHttpRequest();
    var file = "http://www.example.com/Example.html";
    var randomNum = Math.round(Math.random() * 10000);

    xhr.open('HEAD', file + "?rand=" + randomNum, false);

    try {
        xhr.send();
        if (xhr.status >= 200 && xhr.status < 304) {
             alert ('Yes');
        } else {
             alert ('No');
        }
    } catch (e) {
         alert ('No');
    }
}

1)在Ajax场景中,我只指出缓存:&#34; false&#34;!

2)在JavaScript场景中,我使用随机参数来避免缓存!

我有什么遗漏的吗?在服务器端??

请帮忙......

2 个答案:

答案 0 :(得分:0)

这可能是服务器问题?我创建了一个jsFiddle,它似乎应该工作。我将$ .ajax方法包装在ping函数中并运行3次获取jsfiddle资源。

function ping(i) {
  $.ajax({
    url: '/img/logo.png',
    success: function () {
        screen.log({text: 'attempt #'+(i+1)+ ' Yes', timed: +i, clear: 'no'});
    },
    error: function (d){
        screen.log({text: 'attempt #'+(i+1)+ ' Nope', timed: +i, clear: 'no'});
    }
  });
}

请参阅已提及的jsFiddle输出

注意:在您的第二个代码段中,您提供false作为open方法的第三个参数,这意味着asynchronous = false,因此XHR就是同步。第一个代码段中的cache: false参数会将随机reuqeststring附加到请求中。这可以防止浏览器缓存提取的资源。我想这里没有必要。

答案 1 :(得分:0)

经过数小时和数小时尝试错误后,我找到了答案....专门针对那些面临同样问题的人:

在我的情况下,这不是一个常见的网页,它是一个&#34;脱机网页&#34;其中包含清单文件。

只需在&#34; NETWORK&#34;清单文件中包含文件&#34; Example.html&#34;那就是它。

那是所有人!

相关问题