Javascript 在执行ajax调用后尝试验证结果
好的,我有表单验证函数。该函数通过表单验证函数运行,如果字段无效,则返回false 问题是当它到达使用ajax检查字段是否有效的函数时 出于某种原因,它似乎不会“等待”ajax返回并自动返回false 有办法解决这个问题吗 代码如下:Javascript 在执行ajax调用后尝试验证结果,javascript,jquery,ajax,Javascript,Jquery,Ajax,好的,我有表单验证函数。该函数通过表单验证函数运行,如果字段无效,则返回false 问题是当它到达使用ajax检查字段是否有效的函数时 出于某种原因,它似乎不会“等待”ajax返回并自动返回false 有办法解决这个问题吗 代码如下: function form_validation(){ if (!NewValidationForm('pcode', 'Please fill in all the fields')) return false; if (!Ne
function form_validation(){
if (!NewValidationForm('pcode', 'Please fill in all the fields'))
return false;
if (!NewValidationForm('fname', 'Please fill in all the fields'))
return false;
if(!validate_coupon()){
alert("bad!!");
return false;
}
return true;
}
function validate_coupon(){
var url = $j("#site_url").val() + 'ajax_functions.php';
var coupon = $j("#pcode").val();
var result_status = false; // seem its jumps from here to:
$j.ajax({
type: "POST",
url: url,
data: { ajax: 'ajax', coupon: coupon}
}).success(function(insertID){
var obj = $j.parseJSON(insertID);
if(obj.status == 1){
result_status = true;
}
});
// straight over here
if(result_status == true){
return true;
}
}
通常在这种情况下,我会在
$(document).ready()中执行类似操作:
然后,在$.ajax
回调中,当验证完成时,调用$('form').submit()
。这将有效地使用表单上的属性作为是否更改验证请求状态的标志。当用户第一次提交表单时,将设置标志并开始验证过程。验证完成后,将触发表单的提交事件,并且由于设置了标志,因此这次表单将像正常情况一样提交
如果这种方法对您有效,您可能需要添加一些润色。例如,您可能希望在调用$.ajax
之前禁用submit按钮,并在验证失败时再次启用它。如果验证失败,您可能还希望从表单中删除data submitted
属性,因为用户可能会再次提交表单,在这种情况下,您可能希望执行另一次验证。“出于某种原因”-这可能是因为Ajax是异步的。立即返回$.ajax()
调用以及稍后调用成功(或错误)回调是完全正常的。您应该稍微重新构造代码,以便在成功验证后,您想做的任何事情都可以从Ajax成功处理程序中完成。这是一个问题,我试图让人们仅在字段验证时提交表单,因此我让它返回false,直到验证函数返回true。我尝试在ajax调用返回时提交表单,但似乎不起作用我只是编辑了:call$(“form”).submit()而不是触发按钮单击。并确保您的提交按钮没有name=“submit”;谢谢你的帮助,我现在就试试。
$('form').submit(function (evt) {
if (!$(this).attr('data-submitted')) {
evt.preventDefault();
$(this).attr('data-submitted', 'true');
// call your form validation code here that fires the ajax request
return false;
}
return true;
});