2013-10-30 76 views
0

我正在開發一個html項目,最終將由Phonegap進行打包。所以我試圖將數據從html表單編碼爲JSON格式,然後使用ajax發送到位於服務器上的php文件,並接收響應以執行其他操作。爲什麼ajax不工作,除非我刷新或使用location.href?

現在我用<a href='login.html'>在我的index.html打開登錄頁面。在我的登錄頁面中,我有這個

<script> 
     $(document).ready(function(e) {     
      $('#loginform').submit(function(){ 
       var jData = { "email": $('#emailLogin').val(), "password": $('#Password').val()}; 

       $.ajax({          
        url: 'PHP/login.php', 
        type:'POST',       
        data: jData,           
        dataType: 'json', 
        async: false, 
        error: function(xhr,status){ 
         //reload(); 
         location.href='index.html'; 
         alert('Wrong email and password'); 
        }, 
        success: function(data){ 
         if(data[1] == 1){ 
          var Id_user = data[0]; 
          location.href='loginSuccess.html'; 
         } 
        } 
       }); 
      }); 
     }); 
    </script> 

將我的數據發送到服務器。但我發現它不起作用,它仍然在登錄頁面。我試圖輸入數據並再次提交,但仍然沒有發生。在刷新登錄頁面並再次輸入數據之前,它可能會顯示錯誤消息或轉到登錄訪問頁面。但是,當我使用<script> function loadLogin(){ location.href='login.html'; } </script>打開登錄頁面時,一切正常。

那麼是什麼原因造成的呢?我如何修改這段代碼以使其更好?

+0

你是什麼意思,它不會工作? ajax請求是否回退到錯誤功能?請求不會被解僱嗎?請求中是否發送表單數據?什麼不工作? – Delta

+0

我不確定我是否理解這個問題。你說你去了頁面,沒有任何反應,然後你刷新,然後(並且只有這樣)阿賈克斯運行? –

+0

@Delta我認爲它沒有被解僱,因爲在我點擊提交之後,什麼都沒有發生,它仍然在登錄頁面中,沒有任何錯誤信息。 – CodTango

回答

1

你用的是jquery mobile嗎?

我遇到了同樣的問題。

的jQuery移動擁有全球配置選項:ajaxEnabled,默認值是true。

它會自動通過Ajax處理鏈接的點擊和表單提交。

我想你可以設置爲false加載網址作爲常規HTTP請求。

<script src="jquery.js"></script> 
<script> 
    $(document).bind('mobileinit', function() { 
     $.extend($.mobile, { 
      ajaxEnabled: false 
     }); 
    }); 
</script> 
<script src="jquery-mobile.js"></script> 

希望能幫到你。

+0

我試過了你的方法,但它仍然不起作用。我仍然需要重新加載頁面,那麼它只會工作一次。 – CodTango

相關問題