post method with jquery ajax



嗨,我有以下代码:我的代码

我试图在ajax上做一个简单的post方法,但我有一些困难。

首先,我有4个输入(姓名、邮件、电话和国家(,在select上有一些选项和文本区域。

<form id="sendMessage">
<input type="text" name="name" class="name form-control" placeholder="name" required>
<input type="email" name="mail" class="email form-control" placeholder="mail" required>
<input type="number" name="phone" class="phone-number form-control" placeholder="phone" 
required>
<input type="text" name="country" class="country form-control" placeholder="country" 
required>
<select name="theme" required>
<option value="">choose theme</option>
<option value="greenColor">green</option>
<option value="redColor">red</option>
<option value="blueColor">blue</option>
<option value="otherColor">something else...</option>
</select>
<textarea class="textBody form-control" placeholder="Сообщение" rows="5" name="message" 
required></textarea>
<button type="submit" name="submit"  >Send</button>
</form>

场景如下,当用户填写所有字段时,我想在提交按钮后将所有信息发送到后端,但出现了问题。

$("#sendMessage button").on("click", (e) => {
e.preventDefault();
let isOk = true;
let name = $("#sendMessage .name")[0].value;
if (name) isOk = true;
isOk = false;
let email = $("#sendMessage .email")[0].value;
if (email) isOk = true;
isOk = false;
let phoneNumber = $("#sendMessage .phone-number")[0].value;
if (phoneNumber) isOk = true;
isOk = false;
let country = $("#sendMessage .country")[0].value;
if (country) isOk = true;
isOk = false;
let textBody = $("#sendMessage .textBody")[0].value;
if (textBody) isOk = true;
isOk = false;
if (isOk) {
$.ajax({
url: "api/Guest/SendEmailForContact",
method: "POST",
xhrFields: {
withCredentials: true
},
statusCode: {
404: function () {
alert("page not found");
}
},
context: {}
}).done(function () {
console.log(":asdfasdfasdf");
});
}
});

请帮我解决那个问题。谢谢

$.ajax从不运行,因为您在if语句之前将isOk设置为false。进行此验证的更好方法是先将isOk设置为true,然后在任何值无效的情况下将其设置为false。