Jquery通过ajax调用外部PHP文件来验证表单,该文件检查所有字段,并在出现错误消息时阻止表单提交
jquery validate form with ajax call to external php file that checks all fields and block form submit if there is error message
我想在提交事件上验证表单字段。我正在发送ajax请求到php文件,检查字段并返回错误消息或什么都没有,如果一切正常。这是我的js代码:
$('form.p_form').submit(function (){
var description = $.trim($('#f9').val());
//this blocks form submit if empty field and it works
if(description === '') return false;
//this doesnt work
if(description !== ''){
var aa = $.post("checkdescription.php",{
description: description
},
function(data, status){
if(data !== ''){
return data;
}
});
//here I need to know the response text returned from ajax so I can say like this:
if(aa === 'error message'){
return false;
}
}
});
请帮助,我是堆叠和我张贴这个问题第二次,因为我不能得到帮助,提前感谢!
您的变量aa
将不包含您期望的任何数据(实际上它可能包含调用AJAX的post
方法返回的承诺)。
此外,您正在使用post
方法的ajax调用的默认同步类型。
为了访问返回的数据(甚至在承诺之外),您可以使用$.ajax
和async: false
属性:
var aa = ''; //the result
$.ajax({
url: "checkdescription.php",
async: false,
data: {
description: description
},
success: function(data, status){
aa = data;
}
});
然后,您可以在ajax调用后不久检查变量aa
的值。
if(aa === 'error message'){
return false;
}
脚本应该在post请求的'data'变量中捕获响应。例如,成功时为空或错误时为"错误信息"。请在下面尝试并检查是否适合您。
var aa = $.post("checkdescription.php",{
description: description
},
function(data, status){
// data will be empty is everything is ok and "error message" if there is validation error
if(data == 'error message'){
// handle error
} else {
// on success it should be here
}
});
您正在尝试将响应与异步get调用进行同步比较。在ajax调用完成之前,回调函数不会设置var aa
的值。当你试图比较同步和异步时,你必须记住这一点。
那么让我们一步一步地看看这里的代码会发生什么:
- 表单提交
- [推定]描述不是空白
-
var aa
= undefined Ajax post被调用到 -
aa
不等于"error message"
checkdescription.php
aa
永远不会等于'error message'
,并且到达提交函数的末尾(因为完成的ajax响应还没有设置aa
的值)
- (这可能永远不会在这段代码中,但让我们假装它可以)ajax调用返回一个响应,然后您的回调函数将被实例化,它将返回数据或false。现在
var aa
有了一个值。
相关文章:
- 选择文件(表单提交)后无法单击“取消”按钮
- 带有远程 => true 的 Rails 表单提交 -- JS 文件呈现但不执行
- 从不同的javascript文件访问HTML表单提交的值
- 验证数组文件字段的表单提交
- AJAX文件上传/表单提交,无需jquery或iframes
- 防止在表单提交后重定向到 PHP 文件
- 单击带有引导文件输入的上传时停止表单提交
- 可以上传表单提交等待文件处理完成
- 向文件 php 表单提交添加多个输入
- 如果所选文件超出限制,JavaScript 会阻止表单提交
- 将HTML文件中的表单提交到PHP文件,并以相同的HTML显示结果
- 文件上传器表单提交事件调用面板以显示包含文件更新程序我想删除代码重写在 jquery 中使用循环重写所有文件类型
- 在响应文件下载时重新启用表单提交按钮
- Ajax 表单提交到 PHP 文件和 URL
- 表单提交时创建的多个文件夹
- 如何在表单提交中上传带有流星的文件
- 在上传或表单提交之前,请检查基于PHP或javascript的文件上传大小
- Rails模式表单-在表单提交失败后,用html.erb文件中的内容更新弹出窗口
- 为输入表单提交数据而不是文件
- 如何在没有表单提交的情况下使用jquery从文件输入类型中获取文件名