2012-10-26 92 views
1

在加載頁面之前可以檢查頁面的可訪問性嗎?在加載之前使用jquery/ajax檢查頁面的可用性

我有一個窗體,使用無線連接在移動設備上運行。問題是:並不總是這個連接是可用的,我想在用戶提交或卸載頁面時提醒用戶。

的問題是,該頁面包含重定向做這樣的內容:

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

如果此按鈕和服務器的用戶點擊無法實現的情況,我會recive一些undesiderable錯誤。

此外,如果我想概括我的腳本,我不知道以前的「mylocation」的價值。

該頁面包含元素提交表單也:

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

對於我使用的是給ajaxForm插件提交和它工作得很好。

回答

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); 
    }); 

我希望這將是有用的。

1

您應該使用jQuery Ajax函數的回調來捕獲服務器不可用的問題。

你無法檢查服務器的可用性而無需提出請求。

+0

這就是我想要做的,但在這種情況下我沒有得到任何結果。你能給我一些線索嗎? – overcomer

+0

我認爲路易斯發佈的是我詳細的答案。看看他的實現 – pfried

0

您正試圖查看是否有連接。 AFAIK實際檢查服務器是否可訪問的唯一方法是向該服務器發出請求。

設置合理的少量時間(比如說3秒)的超時時間併發出請求。如果您遇到超時錯誤,那麼就沒有連接,否則您可以發送表單。

3

導航回很容易地使用這個代替:

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

其中-1指前一頁。如果要重新加載當前頁面使用0代替,向前瀏覽,使用1等

如果使用AJAX從jQuery的,它通過前人的精力處理自己吧... 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"); 
      } 
     } 
    }); 

編輯後添加評論: 您可以檢查你的情況How do I check if file exists in jQuery or 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. 
    } 
}); 

這實際上會檢查文件存在。如果它無法連接到該文件就不能科幻nd .. 如果他能找到該文件,他顯然能夠連接,所以無論你贏了。

乾杯!

+0

我不需要回去,但在onClick屬性將是任何位置。 我的問題不僅僅是提醒用戶,但如果頁面無法訪問,禁止導航。 如果連接正常,請轉到設置的網址; – overcomer

+0

我只是編輯我的文章這種方式我更清楚 – overcomer

+0

所以基本上你只是想檢查一個位置是否可用,併發送用戶在那裏,如果它是? –

相關問題