2012-07-27 66 views
2

編輯jQuery的AJAX表單提交錯誤工作的成功不是

好了,我可以登錄罰款,但是當我輸入虛假信息,我重定向到登錄頁面,我需要的是保持在同一頁上並顯示錯誤消息e.preventDefault();似乎不起作用。

$(function() { 
    $("#login-form").submit(function(e) { 
     $('.fail').hide(); 
     $.ajax({ 
      url:"/login", 
      type: "post", 
      data: $(this).serialize(), 
      error:function(){ 
       $('.fail').show(); 
       e.preventDefault(); 
      }, 
      success: function(){ 
       document.location = '/'; 
       } 
     }); 
     return false; 
    }); 
}); 

回答

3

你實際上沒有做任何形式的事情,生病嘗試評論你的代碼,以通過發生什麼事情來談論你。

我猜你使用PHP服務器端爲這個代碼。

在PHP中,你想檢查用戶憑證,然後告訴瀏覽器。如果登錄成功,則返回"y",如果失敗"n"

<script type="text/javascript"> 
$(function() { 
    $("#login-form").submit(function() { 
     $('.fail').hide(); 
     $.ajax({ 
      url:"/login", 
      type: "post", 
      data: $(this).serialize(), 
      error:function(){ 
       $('.fail').show(); 
      }, 
      success: function(data) { 
       if (data == "y") { 
        //Login was successful. Redirect statement here? 
       } else { 
        //Failed login message here 
       } 
      } 
     }); 
     return false; 
    }); 
}); 
</script> 

編輯

嘗試在你的成功的功能添加此。請讓我知道您獲得成功的登錄和登錄失敗。

success: function(data) { 
    console.log(data); 
} 

編輯2

這是因爲你的Ajax調用成功,只是登錄失敗。這就是爲什麼你的成功處理程序被調用。

要對此進行排序,您需要查看服務器返回的內容,它是什麼?在這種情況下,嘗試:

success: function(data) { 
    if (data == "") { 
     e.preventDefault(); 
    } else { 
     //Login successful, redirect user. 
    } 
} 
+0

後端開發者正在使用Java/play for服務器端代碼 – 2012-07-27 12:00:00

+0

@ OliMillington您是否可以要求他們發回成功登錄的「y」和失敗的「n」?它的功能與 – Undefined 2012-07-27 12:01:14

+0

的功能完全一樣,直到星期一,我無法聯繫後端開發人員,我需要嘗試今天完成此工作。 – 2012-07-27 12:05:15

0

您應該加上:當URL是發現和訪問

success: function(data){ 
    /* Validation data here, if authentication answer is correct */ 
    if(data == 'ok') 
     document.location = '/'; 
    else 
     /* show error here */ 
} 
+0

這個用戶名和密碼添加到URL像「get」,有沒有「後」版本? – 2012-07-27 11:58:41

+0

你在你的問題中使用POST?它不應該顯示在網址中。 – Undefined 2012-07-27 11:59:37

+0

這就是我的想法,但是當我測試你的代碼時,它做了一個「get」風格提交 – 2012-07-27 12:01:10

0

成功發生。
並且找不到URL時發生錯誤。
如果要檢查回撥MSG,則必須在URL頁面&中檢查數據是否成功打印。 這樣的:

<script type="text/javascript"> 
$(function() { 
$("#login-form").submit(function() { 
    $('.fail').hide(); 
    $.ajax({ 
     url:"/login", 
     type: "post", 
     data: $(this).serialize(), 
     success:function(data){ 
      if(data=="true"){ 
       alert("success"); 
      }else{ 
       alert("faild") 
      } 
     } 
    }); 
    return false; 
}); 
}); 

</script> 

中的login.php

<?php 
//check if for true... 
echo "true"; 
//and if it is not true... 
echo "false"; 
?> 

數據參數成功是一個字符串,返回的HTML內容 「/登錄」