在網頁上,我們有以下系統的服務器端表單驗證。例如,如果用戶正在添加一個事件的日期詳細信息(並且事件可以包含很多這樣的日期詳細信息),我們在點擊下面的「添加」按鈕時調用一個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頁面上顯示相應的錯誤消息。
問題是,當我們第一次執行此操作時(例如:在頁面硬刷新後),提交此日期詳細信息表單以進行驗證需要很多時間(與後續請求相比) 。
我們觀察到,不是一次調用codelibrary/classes/myclass.php文件,而是在跳轉到所需位置(validationArrName)並運行該文件之前,實際引用該文件10次以上。
對於後續請求,它工作正常,並且只引用該文件一次。
這裏有什麼問題?我們使用jQuery提交會出現問題嗎?
我不明白,你說有10個Ajax第一次調用,或者有10個來自服務器的myclass.php調用? – roselan
10調用服務器上的myclass.php,但不會調用/訪問validationArrName部分,直到最後一次調用。 – siliconpi
嗨@roselan - 有10個調用服務器上的myclass.php,但是validationArrName部分不被調用/訪問,直到最後一次調用... – siliconpi