1

這是我得到一個錯誤的click事件使用。在服務器端代碼完成之前,Ajax調用被「取消」。然後我在$ Ajax錯誤方法中執行調試器,statusText只是說statusText: "error"。我通過刪除<form id="formid">.... <form/>找到了一個臨時解決方案。但因爲我使用的jQuery.ValidationEnginen只能用於一個。jQuery ajax表單錯誤

jQuery代碼:

$("#formid").validationEngine('attach', { scroll: false }).css({ color: "#4a6b0e" }); 

    $('#submitLogin').click(function() { 
      var self = this; 
      var UserName = $("#UserName").val(); 
      var Password = $("#Password").val(); 
      var RememberMe = $("#RememberMe").val(); 
      var PropertyId = ol.property.infoId; 
      $.ajax({ 
       type: "POST", 
       url: ol.url("~/Authentication/LogIn"), 
       data: { "UserName": UserName, "Password": Password, "RememberMe": RememberMe }, 
       success: function (data) { 

        if (data.Errormes) { 
        $("#Result").html("Error: " + data.Errormes); 
        } else { 
        window.location.reload(); 
        } 
       }, 
       error: function (data, arg1, arg2, arg3) { 
        alert("Error: Run for your life!!"); 
       } 
      }); 
     }); 

形式:

<form id="formid"> 
      <div class="LeftCol">Brugernavn</div> 
      <div class="RightCol"> 
       <input type="text" style="width: 250px" id="UserName" name="UserName" class="validate[required,custom[email]]"> 
      </div> 
      <div class="LeftCol">Adgangskode</div> 
      <div class="RightCol"> 
       <input type="password" style="width: 250px" id="Password" name="Password" class="validate[required]" /> 
      </div> 
      <div class="LeftCol">Husk mig?</div> 
      <div class="RightCol"> 
       <input data-val="true" data-val-required="The Remember me? field is required." id="RememberMe" name="RememberMe" type="checkbox" value="true"> 
      </div> 
       <br><div class="RightCol" id="Result" style="color:red;"></div><br> 
     <input id="submitLogin" type="submit" value="Log in" class="oline-button-green white" /> 
</form> 

回答

3

嘗試添加此:

$('#submitLogin').click(function (e) { 
    e.preventDefault(); 
    // ... 
}); 

既然你綁定一個click事件提交按鈕,你的Ajax請求正在異步發送,表單也被髮送,導致頁面重新加載並且ajax請求到b e取消。

要避免單擊提交按鈕時要提交的表單,您必須通過使用e.preventDefault();

來防止提交按鈕的默認行爲