自动检测网址状态并设置为使用它

时间:2017-02-12 07:05:42

标签: javascript jquery

我有以下功能使用,我可以在互联网上浇水,但是当我在家时,我可以使用http://192.168.1.156:8025/?waterPlant1而不是http://www.example.com:8025/?waterPlant1。其次,通过第二个链接,有时需要时间来打开阀门。那么有什么方法可以自动检测我是否成功使用http://192.168.1.156:8025/?waterPlant1我继续使用该网址,否则使用http://www.example.com:8025/?waterPlant1。这意味着我不在同一个网络上,或者我不在家。

function waterPlant1() {
    var ifrm = document.createElement("iframe");
    ifrm.setAttribute("src", "http://www.example.com:8025/?waterPlant1");
    ifrm.setAttribute("id", "iframe");
    ifrm.style.visibility = "false";
    ifrm.style.display = "none";
    document.body.appendChild(ifrm);

 }



<button onclick="waterPlant1()">Water the Plant</button>

3 个答案:

答案 0 :(得分:0)

为您编写了一些代码,它返回了您想要了解的URL状态和所有内容。检查它是否有帮助。

&#13;
&#13;
var url = 'Your default url';
  $('button').click(function(){
   	$.ajax({
          url: url,
          data:"",
          method:"post",
          success: function(data, textStatus, jqXHR){
           console.log("data is ", data, "\n status is ", textStatus, "\n jqXHR is :", jqXHR);
          },
          error: function(){
            
            $.post( "Your second URL",      function( data ) {
                console.log(data)
              });
          }
        })     
  })
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Water the Plant</button>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

由于HTTP超时,可能需要更长时间才能检测到URL是否无法访问,然后在可以访问这两个URL的情况下走得很远。

如果您可以控制后端,我建议将信号发送到这两个URL。在后端,处理第一个请求&amp;忽略后者,但将成功归功于两者。

答案 2 :(得分:0)

我设法让它像这样工作,我从按钮点击函数调用传递url,如果它工作,那很好。否则如果它超时。使用example.com [这意味着我不在家里网络]

&#13;
&#13;
function waterPlant1(url){

   	$.ajax({
          url: url,
          data:"",
          timeout: 500,
          method:"post",
          success: function(data, textStatus, jqXHR){

           console.log("URL is: " + url);
          }
          ,
          error: function(request, status, err){
            if (status == "timeout") {
            	url = 'http://example.com/?waterPlant1';
            	document.getElementById("msg").innerHTML = url;

            	var ifrm = document.createElement("iframe");
			    ifrm.setAttribute("src", url);
			    ifrm.setAttribute("id", "iframe");
			    ifrm.style.visibility = "false";
			    ifrm.style.display = "none";
			    document.body.appendChild(ifrm);
            } else {
                // another error occured  
                alert("error: " + request + status + err);
            }

          }
        }) 
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button onClick="waterPlant1('http://192.168.1.16/?waterPlant1')">Water the Plant</button>
&#13;
&#13;
&#13;

从函数作为参数传递URL的好处是,在每次单击按钮时,我首先测试本地网络URL。这样我可以避免全局变量,它会被过去的点击覆盖,以便下次重试,以便我们从未使用本地网络URL。