我嘗試使用jQuery和validate()函數提交表單。當我在本地測試時,event.preventDefault()起作用!也沒有行「event.preventDefault();」但是,當我將它部署到服務器時,結果json會加載到新頁面中 - 它不會阻止重定向。Form validate PreventDefault只能在本地使用,但不能在服務器上使用
$(function() {
$("#photo-form").validate({
submitHandler: function (form, event) {
event.preventDefault(); //with or without - doesn't work
if ($(form)[0].checkValidity()) {
console.log("No Errors!")
var formData = new FormData(document.querySelector("#photo-form"));
var photo = formData.get("photo");
$.ajax({
url: "/photo/",
type: 'POST',
data: formData,
async: false,
success: function (data) {
console.log("Ajax success");
if (data.error == "OK") {
alert("Photo was uploaded");
} else {
//error
}
},
error: function (data) {
},
cache: false,
contentType: false,
processData: false
});
return false; //this also doesn't help
}
}
});
});
這種情況下的錯誤在哪裏?此代碼的本地和服務器之間有什麼區別?
HTML表單:
<form id="photo-form" action="/photo/" method="post" enctype="multipart/form-data"
class="row col s10 center-block">
<div class="card row">
<div class="col s12">
<h5>Generic Information</h5>
<div class="input-field col s12 m6">
<i class="material-icons prefix">title</i>
<input id="campaign_id" type="text" name="campaign_id" class="validate" required>
<label for="campaign_id" data-error="huh?" data-success="WOW!">campaign_id</label>
</div>
<div class="input-field col s12 m6">
<div class="file-field input-field">
<button class="btn btn-floating pink lighten-1 file-btn">
<span>Photo</span>
<input name="photo" type="file">
</button>
<div class="file-path-wrapper">
<input class="file-path validate" type="text">
</div>
</div>
</div>
<div class="row">
<div class="input-field col s8">
<button class="btn-large waves-effect waves-light" type="submit">Submit
<i class="material-icons right">send</i>
</button>
</div>
</div>
</div>
</div>
</form>
打開瀏覽器控制檯並檢查錯誤。 – adeneo
檢查控制檯中的任何Javascript錯誤。 – vitorio
向我們展示表單的HTML標記......您的規則如何聲明? – Sparky