Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 第一次jQuery$.post需要非常长的时间,后续时间正常_Ajax_Performance_Jquery_Jquery Post - Fatal编程技术网

Ajax 第一次jQuery$.post需要非常长的时间,后续时间正常

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

在网页上,我们有以下服务器端表单验证系统。例如,如果用户正在为一个事件添加日期详细信息,并且一个事件可能包含许多这样的日期详细信息,那么单击下面的“添加”按钮,我们将调用javascript函数

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部分直到最后一次调用才被调用/访问…我编辑了我的答案,重点是很难理解您提供的信息/代码发生了什么。我相信,更全面的代码会有所帮助。