Ajax 第一次jQuery$.post需要非常长的时间,后续时间正常
在网页上,我们有以下服务器端表单验证系统。例如,如果用户正在为一个事件添加日期详细信息,并且一个事件可能包含许多这样的日期详细信息,那么单击下面的“添加”按钮,我们将调用javascript函数Ajax 第一次jQuery$.post需要非常长的时间,后续时间正常,ajax,performance,jquery,jquery-post,Ajax,Performance,Jquery,Jquery Post,在网页上,我们有以下服务器端表单验证系统。例如,如果用户正在为一个事件添加日期详细信息,并且一个事件可能包含许多这样的日期详细信息,那么单击下面的“添加”按钮,我们将调用javascript函数 validateForm('frmName','codelibrary/classes/myclass.php','validationArrName') where: @frmName = form name @codelibrary/classes/myclass.php = location of
validateForm('frmName','codelibrary/classes/myclass.php','validationArrName')
where:
@frmName = form name
@codelibrary/classes/myclass.php = location of class file, that contains classes and functions for server side validation
@validationArrName = Type of validation we apply
In the php script, validationArrName is defined as a list of keys (representing form fields) and values (representing the functions we will call to validate that form field).
validationArrName = array ('fieldName1'=>validationFun1,'fieldName2'=>validationFun2);
eg:
fieldName1 = email_address
validationFun1 = validateEmail()
在html页面上,我们通过ajax调用服务器端验证,如下所示
$.post(className,$("form[name="+formName+"]").serialize()+"&isValidate=1&validateArrayName="+validateArrayName,function(data){ ... });
如果验证函数报告错误,我们将在html页面上显示相应的错误消息
问题是,当我们第一次这样做时,例如:在硬刷新页面后,与后续请求相比,提交此日期详细信息表单进行验证需要花费大量时间
我们观察到,在跳转到所需的位置ValidationArName并运行该文件之前,它没有调用codelibrary/classes/myclass.php文件一次,而是多次引用该文件
对于后续请求,它工作正常,只引用该文件一次
这里可能有什么问题?我们使用jquery submit会有问题吗?最好的办法就是时间 在javascript中:
console.time('post load'):
$.post(className,$("form[name="+formName+"]").serialize()+"&isValidate=1&validateArrayName="+validateArrayName,function(data){
console.timeEnd('post load');
console.log('data');
...
});
在php中,使用microtime对不同的部分计时并进行回显。它们将在控制台中打印
它不应该是缓存或包含相关的,因为ajax每次都会启动一个新连接
根据您的评论,我编辑此答案:
我仍然对所发生的事情一无所知。然而,我看到两种可能性。第一个是使用标志来验证表单是否有效。加载页面时,所有表单标志都未设置,首先提交并检查所有表单。后续提交工作正常
另一种选择是,在您第一次提交表单时,您不必在“提交”按钮上单击event.prevent默认值,但这仍然是一个荒谬的解释
我很想看看你是怎么称呼美元的。。。函数如何绑定submit按钮,或者如何调用$.submit。我不明白,你说第一次有10个ajax调用,或者你的服务器有10个myclass.php调用?服务器上有10个myclass.php调用,但是ValidationArName部分直到最后一次调用才被调用/访问。Hi@roselan-服务器上有10个对myclass.php的调用,但是ValidationArName部分直到最后一次调用才被调用/访问…我编辑了我的答案,重点是很难理解您提供的信息/代码发生了什么。我相信,更全面的代码会有所帮助。