2011-11-28 104 views
0

美好的一天。提交前运行ajax脚本

我遇到了在表单提交之前运行ajax调用的问题。我只是一个新手web开发人员,所以请耐心等待。

我的代码是这样的:

$(function() { 
$('#formname').submit(function() { 
    $.post('validation.php', $(this).serialize(), function(data) { 
    if(data == 'something') return true; 
    else return false; 
    }); 
} 
}); 

此代码是不是为我工作。代码有什么问题或者有其他方法可以实现这一点。

由于提前,

+0

什么是你想达到什么目的?在提交之前验证? –

+0

是的先生Sandeep G B ...我想验证表单内容与我的数据库记录... – KiiroSora09

+0

任何反馈我的朋友吗?我的解决方案工作与否? – erimerturk

回答

1

你可以定义点击事件你的提交按钮。然后当你点击它,首先做你的文章,然后提交表单。

HTML:

<form id="target" action="destination.html"> 
    <input type="text" value="Hello there" /> 
    <input type="submit" value="Go" /> 
</form> 
<div id="other"> 
    Trigger the handler 
</div> 

JS:

$('#other').click(function() { 

    $.post('validation.php', $('#target').serialize(), function(data) { 
    if(data == 'something') { 
     $('#target').submit(); 
    } 
    }); 
}); 
+0

感谢您的回复sir erimerturk ...这就是我最近才想到的......现在就试试吧...... – KiiroSora09

+0

在AJAX回调函数中返回false是什么意思? – ThiefMaster

+0

谢谢!它为我工作。 –

1

您需要return false;在提交处理程序,而不是AJAX的回调里面。但是,更好的做法是将函数更改为接受参数e,然后在执行AJAX调用之前调用e.preventDefault();。如果验证成功,请使用$('#formname')[0].submit();实际提交表单,而无需再次调用提交处理程序。

PS:最好使用插件,如优秀的jQuery form pluginvalidation plugin

+0

ThiefMaster先生感谢您的快速回答...我会尝试您的建议,并看看插件... – KiiroSora09

2

你可以做到这一点,但它很丑,你真的不想这样做。

$(function() { 
$('#formname').submit(function() { 
    var returnValue; 
    $.post({ 
    async: false, // This makes it possible 
    url: 'validation.php', 
    data: $(this).serialize(), 
    success: function(data) { 
     if(data == 'something') returnValue = true; 
     else returnValue = false; 
    } 
    }); 
    return returnValue; 
} 
}); 

但你为什么要这样?因为你可以做另一个Ajax函数并做好准备。当你完成你的Ajax请求后,你可以做一个document.location= "newlocation.html"。因为现在你的应用程序将等待直到你完成了一个Ajax请求。如果您的ajax请求需要10秒钟,则人们无法使用您的页面10秒钟。

如果您只是总是return false并且执行Ajax请求,您将在其中处理表单。只要你做了document.location,将是一个更好的选择。所以你的应用程序不会卡住。

+0

尼尔斯爵士感谢您的快速答复..我也会尝试你的方法......但我认为我会尝试将ajax调用放在提交按钮上单击,然后在有效的ajax返回值返回时提交表单...并且当ajax请求仍在处理时,我还会发出一个等待消息... – KiiroSora09

+1

不需要使用Sjax以此目的。执行异步回调后,您可以轻松地提交表单。 – ThiefMaster

+0

+1,我同意。提交之前的Ajax调用不是必需的。执行客户端验证并提交数据。如果提交的数据无效(因为您不能信任客户端数据,您需要执行双重验证),则返回错误。 –