1

是否可以在加载页面之前检查页面的可用性?

我有一个表格,使用无线连接在移动设备上运行。问题是:此连接并不总是可用的,我想在提交或卸载页面时提醒用户。

问题是该页面包含执行重定向的元素,如下所示:

<input type="button" value="MyText" onClick="script1;script2;...window.location='mylocation'" />

如果用户单击此按钮并且服务器无法访问,我将收到一些不良错误。

另外,如果我想概括我的脚本,我以前不知道“mylocation”的值。

该页面还包含提交表单的元素:

<input type="submit" name="SUBMIT" value="MyValue" onClick="return eval('validationForm()')" />

对于提交,我使用的是ajaxForm插件,它工作得很好。

4

4 回答 4

3

要轻松地向后导航,请改用:

<input type="button" value="Back" onClick="window.location='history.go(-1);" >

其中 -1 表示上一页。如果要重新加载当前页面,请改用 0,向前导航,请使用 1 等。

如果您使用 jquery 的 ajax,它会自行处理... http://api.jquery.com/jQuery.ajax/

$.ajax({
        ///... need argument here...

        timeout: 5000, // in milliseconds
        success: function(data) {
             //Do something success
        },
        error: function(request, status, err) {
            if(status == "timeout") {
               alert("can't reach the server");
            }
        }
    });

评论后编辑:您可以检查如何检查文件是否存在于 jQuery 或 JavaScript 中? 在您的情况下,这将按预期工作:

//Initialize the var as global so you can use it in the function below
var goto_url = "http://www.mywebsites.com/foo.html"; 

$.ajax({
    url:goto_url;
    type:'HEAD',
    error: function()
    {
        //do something if the gile is not found
    },
    success: function()
    {
         document.location = goto_url; //docuemnt.location will redirect the user to the specified value.
    }
});

这实际上将检查文件是否存在。如果它无法连接到文件,它将无法找到它。如果他能找到文件,他显然能够连接,所以无论哪种情况你都赢了。

干杯!

于 2012-10-26T10:49:26.083 回答
1

您应该使用 jQuery Ajax 函数的回调来捕获服务器不可用的问题。

如果不向它发出请求,您就无法检查服务器的可用性。

于 2012-10-26T10:21:37.990 回答
1

感谢您的回答,我找到了问题的解决方案。这在启动脚本和重定向之前检查服务器是否可以实现。那是代码:

 function checkConnection(u,s){
    $.ajax({
        url:u,
        cache:false,
        timeout:3000,
        error: function(jqXHR, textStatus)
        {
            alert("Request failed: " + textStatus ); 
        },
        success: function()
        {
            eval(s);   
        }
    });       
 }      

    $(document).ready(function() {
        // part of the function that checks buttons with redirect
        // for any button that contain a redirect on onClick attribute ("window.locarion=")
        $("input[type=button]").each(function(){
            var script = $(this).attr("onClick"); 
            var url = "my_url";
            var position = script.indexOf("window.location") ;  
            if (position >= 0) {       // case of redirect           
               url = "\'"+url+"\'"; // that's my url
               script = "\""+script+"\""; // that's the complete script
               $(this).attr("onClick","checkConnection("+url+","+script+")");
            }
        });
        // part of the function that checks the submit buttons (using ajaxForm plugin)
        var options = {
                    error: function() {                    
                        alert("Message Error");   
                    },
                    target: window.document,
                    replaceTarget: false,
                    timeout:   3000
                };
                $("form").ajaxForm(options);
    });

我希望这会很有用。

于 2015-04-29T17:00:40.733 回答
0

您正在尝试查看是否存在连接。AFAIK 实际检查服务器是否可访问的唯一方法是向该服务器发出请求。

设置相当短的超时时间(比如 3 秒)并发出请求。如果您收到超时错误,则表示没有连接,否则您可以发送表单。

于 2012-10-26T10:22:13.323 回答