ajax - 如何使用 ajax 和表单数据将验证码提交给控制器
问题描述
我有form
一些字段和文件上传,呈现为partial view
使用ajax
in asp.net MVC
。提交表单时,我想将所有数据传递给控制器。但如果我使用$("form").serialize()
,它不会将选定的文件传递给控制器。所以我formData()
用来将数据传递给控制器。到目前为止,一切正常。
但是添加captcha
using后CaptchaMvc
,它没有到达控制器。即使我输入 valid captcha
,它在控制器中也是无效的。
这就是我使用ajax
and向控制器发送数据的方式formData
var data = new FormData();
var vidFile = null;
if ($("#FileUpload")[0].files.length > 0)
vidFile = $("#FileUpload")[0].files[0];
data.append("detail", $("#detail").val());
data.append("name", $("#name").val());
data.append("FileUpload", vidFile);
$.ajax({
url: "/home/submitData",
type: "POST",
contentType: false,
processData:false,
data: data,
success: function (response) {
if (response.success == true) {
} else {
}
}
});
有没有办法将验证码也传递给控制器?
解决方案
为什么不能使用不同的控制器功能进行验证,如下:
提交时,先验证验证码,根据结果调用另一个控制器函数提交数据或显示错误。
var submitData = function(){
var data = new FormData();
var vidFile = null;
if ($("#FileUpload")[0].files.length > 0)
vidFile = $("#FileUpload")[0].files[0];
data.append("detail", $("#detail").val());
data.append("name", $("#name").val());
data.append("FileUpload", vidFile);
$.ajax({
url: "/home/submitData",
type: "POST",
contentType: false,
processData:false,
data: data,
success: function (response) {
if (response.success == true) {
//Success
} else {
//Submission failed
}
}
});
}
var validateCaptcha = function(){
$.ajax({
url: "/home/validateCaptcha",
type: "POST",
data: $("form").serialize(),
success: function (response) {
if (response.success == true) {
submitData();
} else {
alert("Invalid Captcha entry");
}
}
});
}
$("form").submit(function(e){
validateCaptcha();
});
推荐阅读
- php - 使用 Intellisense 命名空间上的未定义类型
- azure - Microsoft.Azure.EventHubs.Processor 中的异常导致 CPU 阻塞
- python - 在 Heroku 上创建应用程序后打开应用程序时出现应用程序错误
- javascript - 从 json 响应中获取字段的计数
- powershell - Powershell - 替换文件中每行的前 3 个字符
- amazon-web-services - AWS - 将网站的子目录重定向到另一个 Elastic Beanstalk 应用程序
- javascript - 如何从freemarker中的字符串获取url
- javascript - 如何在 JavaScript 中获取特殊字符串?
- scala - Spark - Java 中没有“Dataframe”类型
- javascript - 如何获得过滤功能以进一步过滤,而不是重新加载数据?