【发布时间】:2017-07-31 17:26:40
【问题描述】:
我有一个似乎无法解决的问题。首先是一些可能相关的上下文。
我正在为我的软件构建一个类似 MVC(我说“喜欢”是因为我仍在学习 MVC 的工作原理)的 php 框架。我希望所有输入表单通过 ajax 将数据提交到后端控制器,该控制器路由数据并将其输入到适当的数据库中。所有的 HTML 代码都是通过 php 类生成的,而 JavaScript 则包含在 php 类中。
我遇到的问题是 ajax 函数。它一直在尝试正常提交发布请求,而我希望它异步提交。我已经让它在不同的时间点正常工作,但是当我改变框架的各个方面时它似乎中断了。我尝试了“form.preventDefault()”和“return false”的各种组合,但这似乎并不重要。验证部分有效(它不会提交无效条目。使用this 插件)。我发现 JavaScript 会自行缓存,我通过将版本号附加到文件名来解决这个问题。
这里是 ajax 代码。它向用户返回有关请求状态的消息。知道为什么它拒绝异步提交吗?
$(document).ready(function() {
// Initialize form validation
***old code
$("form[name='ajaxform']").validate({ ***
// Specify validation rules
***Updated code
$('#ajaxsubmit').on('click', function() {
$("#ajaxform").valid();
});
// Initialize form validation
$('#ajaxform').validate({ ***
....[omitting the validation rules for brevity]
errorElement : 'div',
errorLabelContainer: '#usermessage',
submitHandler: function(form) {
$.ajax({
cache : false,
url : $(form).attr('action'),
type : 'POST',
dataType: 'text',
data : $(form).serialize(),
success : function(data) {
var response = $.parseJSON(data);
if(response['error']){
$('#usermessage').html(response['error']);
}else{
if(response['success']){
$('#usermessage').css({"color":"#00b300","font-weight":"bold"});
$('#usermessage').html(response['success']);
}
}
},
error : function(err) {
alert(err);
}
});
return false;
}
});
});
【问题讨论】:
-
@shamelessApathy,既然验证插件是响应表单提交的,那么如果按照你说的把按钮类型改成“按钮”,你会如何触发插件呢?
-
我刚刚找到了这个。 google.com/url?sa=t&source=web&rct=j&url=https://…。我会尝试并回复你。谢谢!
标签: php jquery ajax asynchronous jquery-validation-engine