在前端方面,我不是很熟练,所以也许我在这里忽略了一些显而易见的事情。 我有一个输入表单,单击提交时,下面的代码将数据发送到试图保存该数据的java后端。如果成功,则响应为200,如果数据有问题,则响应为400。我尝试添加警报,以告知用户是否成功。这些工作有效,除非我尝试在发送之前验证输入:
function saveEntry() {
var form = document.getElementById("catalogEntry"); // apparently this line breaks all alerts within the ajax call
if (form.checkValidity() === false) {
form.classList.add("was-validated");
return;
}
var formData = new FormData();
// *Appending form data*
$.ajax({
type: "POST",
url: "/addCatalogEntry/",
data: formData,
processData: false,
contentType: false,
cache: false,
timeout: 600000,
statusCode: {
200: function (response) {
alert("Entry saved");
},
400: function (response) {
alert("Could not save entry");
}
}
});
}
如果我删除了该功能的前5行,则会显示警报,但没有输入验证。一旦我添加了用于初始化表单变量的行,警报就会停止显示。我设法通过在ajax调用之后添加另一个毫无意义的警报来再次启动它们。我真的很困惑为什么会这样...
如果重要,我的表单基本上是这样的:
<form id="catalogEntry">
<div class="input-group mb-2">
<span class="input-group-addon col-sm-2">catalogId</span>
<input id="catalogId" type="text" class="form-control" required>
</div>
<div class="input-group mb-2">
<span class="input-group-addon col-sm-2">blockType</span>
<select id="blockType" class="form-control">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
</div>
<button type="submit" class="btn btn-default" onclick="saveEntry()">Save</button>
</form>
答案 0 :(得分:1)
因为你在做
return; // returns "undefined"
在表单检查中,其余代码未执行。
答案 1 :(得分:-1)
在函数内,如果要继续执行脚本,则不能使用function assignEditUrls() {
var form = FormApp.openById('some id');
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses 1');
var data = sheet.getDataRange().getValues();
var urlCol = 6;
var responses = form.getResponses();
var timestamps = [], urls = [], resultUrls = [];
for (var i = 0; i < responses.length; i++) {
timestamps.push(responses[i].getTimestamp().setMilliseconds(0));
urls.push(responses[i].getEditResponseUrl());
}
for (var j = 1; j < data.length; j++) {
resultUrls.push([data[j][0] ?
urls[timestamps.indexOf(data[j][0].setMilliseconds(0))] : ''
]);
}
sheet.getRange(2, urlCol, resultUrls.length).setValues(resultUrls);
}
键;在这种情况下,当代码被读取且return
句子为if
({ {1}}),您用true