我有以下功能使用,我可以在互联网上浇水,但是当我在家时,我可以使用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>
答案 0 :(得分:0)
为您编写了一些代码,它返回了您想要了解的URL状态和所有内容。检查它是否有帮助。
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;
答案 1 :(得分:0)
由于HTTP超时,可能需要更长时间才能检测到URL是否无法访问,然后在可以访问这两个URL的情况下走得很远。
如果您可以控制后端,我建议将信号发送到这两个URL。在后端,处理第一个请求&amp;忽略后者,但将成功归功于两者。
答案 2 :(得分:0)
我设法让它像这样工作,我从按钮点击函数调用传递url,如果它工作,那很好。否则如果它超时。使用example.com [这意味着我不在家里网络]
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;
从函数作为参数传递URL的好处是,在每次单击按钮时,我首先测试本地网络URL。这样我可以避免全局变量,它会被过去的点击覆盖,以便下次重试,以便我们从未使用本地网络URL。