問題:
火狐下連續發送2個POST請求時第一個請求丟失(第二個POST請求通過提交表單發送)
解決步驟:
1.該問題在CHROME OPERA瀏覽器均沒有出現,而在火狐下出現,說明後端PHP並沒有問題,問題定位於前端
2.查看TP後臺和打分相關的LOG發現,在CHROME瀏覽器下,後臺有收到前端第一條POST請求,SQL也正確執行,而在火狐下,該POST請求沒有出現,對應的SQL也當然沒有出現:
CHROME LOG:
[ 2016-06-18T15:37:15+08:00 ] 106.37.236.173 /index.php?m=Home&c=Admin&a=getExerciseLibraryChapterDetails&id=167
INFO: [ app_init ] –START–
INFO: Run Behavior\BuildLiteBehavior [ RunTime:0.000000s ]
INFO: [ app_init ] –END– [ RunTime:0.000000s ]
INFO: [ app_begin ] –START–
INFO: Run Behavior\ReadHtmlCacheBehavior [ RunTime:0.000000s ]
INFO: [ app_begin ] –END– [ RunTime:0.000000s ]
SQL: SHOW COLUMNS FROM biz_exercise_library
[ RunTime:0.0000s ]
SQL: SELECT biz_exercise_library.*,biz_exercise_template.template_name FROM biz_exercise_library
INNER JOIN biz_exercise_template on biz_exercise_library.type=biz_exercise_template.id WHERE biz_exercise_library.chapter_id = ‘167’ ORDER BY biz_exercise_library.question_id asc [ RunTime:0.0000s ]
[ 2016-06-18T15:37:38+08:00 ] 106.37.236.173 /index.php?m=Home&c=Teach&a=addScoreDetailsIntoDb
INFO: [ app_init ] –START–
INFO: Run Behavior\BuildLiteBehavior [ RunTime:0.000000s ]
INFO: [ app_init ] –END– [ RunTime:0.000000s ]
INFO: [ app_begin ] –START–
INFO: Run Behavior\ReadHtmlCacheBehavior [ RunTime:0.000000s ]
INFO: [ app_begin ] –END– [ RunTime:0.000000s ]
SQL: SHOW COLUMNS FROM biz_homework_score_details
[ RunTime:0.0000s ]
NOTIC: [2] Illegal offset type in isset or empty D:\XXXXXX\ThinkPHP\Library\Think\Model.class.php 第 511 行.
SQL: DELETE FROM biz_homework_score_details
WHERE question_id
= 1 AND student_id
= 48 AND homework_id
= 153 [ RunTime:0.0000s ]
SQL: INSERT INTO biz_homework_score_details
(student_id
,homework_id
,question_id
,score
,full_score
,flag
,question_org_id
) VALUES (‘48’,’153’,’1’,’4’,’4’,’1’,’740’) [ RunTime:0.0000s ]
NOTIC: [2] Illegal offset type in isset or empty D:\XXXXXX\ThinkPHP\Library\Think\Model.class.php 第 511 行.
SQL: DELETE FROM biz_homework_score_details
WHERE question_id
= 2 AND student_id
= 48 AND homework_id
= 153 [ RunTime:0.0000s ]
SQL: INSERT INTO biz_homework_score_details
(student_id
,homework_id
,question_id
,score
,full_score
,flag
,question_org_id
) VALUES (‘48’,’153’,’2’,’0’,’2’,’2’,’741’) [ RunTime:0.0156s ]
[ 2016-06-18T15:37:43+08:00 ] 106.37.236.173 /index.php?m=Home&c=Teach&a=doGrade
INFO: [ app_init ] –START–
INFO: Run Behavior\BuildLiteBehavior [ RunTime:0.000000s ]
INFO: [ app_init ] –END– [ RunTime:0.000000s ]
INFO: [ app_begin ] –START–
INFO: Run Behavior\ReadHtmlCacheBehavior [ RunTime:0.000000s ]
INFO: [ app_begin ] –END– [ RunTime:0.000000s ]
SQL: SHOW COLUMNS FROM biz_homework_student_details
[ RunTime:0.0000s ]
SQL: UPDATE biz_homework_student_details
SET score_details
=’{\”s_1\”:\”4\”,\”s_2\”:\”0\”,\”total\”:\”4\”}’,score_at
=’1466235463’,status
=’2’,points
=’4’ WHERE id
= ‘166’ [ RunTime:0.0000s ]
FIREFOX LOG:
[ 2016-06-18T15:27:45+08:00 ] 106.37.236.173 /index.php?m=Home&c=Admin&a=getExerciseLibraryChapterDetails&id=167
INFO: [ app_init ] –START–
INFO: Run Behavior\BuildLiteBehavior [ RunTime:0.000000s ]
INFO: [ app_init ] –END– [ RunTime:0.000000s ]
INFO: [ app_begin ] –START–
INFO: Run Behavior\ReadHtmlCacheBehavior [ RunTime:0.000000s ]
INFO: [ app_begin ] –END– [ RunTime:0.000000s ]
SQL: SHOW COLUMNS FROM biz_exercise_library
[ RunTime:0.0000s ]
SQL: SELECT biz_exercise_library.*,biz_exercise_template.template_name FROM biz_exercise_library
INNER JOIN biz_exercise_template on biz_exercise_library.type=biz_exercise_template.id WHERE biz_exercise_library.chapter_id = ‘167’ ORDER BY biz_exercise_library.question_id asc [ RunTime:0.0000s ]
[ 2016-06-18T15:28:00+08:00 ] 106.37.236.173 /index.php?m=Home&c=Teach&a=doGrade
INFO: [ app_init ] –START–
INFO: Run Behavior\BuildLiteBehavior [ RunTime:0.000000s ]
INFO: [ app_init ] –END– [ RunTime:0.000000s ]
INFO: [ app_begin ] –START–
INFO: Run Behavior\ReadHtmlCacheBehavior [ RunTime:0.000000s ]
INFO: [ app_begin ] –END– [ RunTime:0.000000s ]
SQL: SHOW COLUMNS FROM biz_homework_student_details
[ RunTime:0.0000s ]
SQL: UPDATE biz_homework_student_details
SET score_details
=’{\”s_1\”:\”4\”,\”s_2\”:\”0\”,\”total\”:\”4\”}’,score_at
=’1466234880’,status
=’2’,points
=’4’ WHERE id
= ‘166’ [ RunTime:0.0000s ]
3.基於以上事實,考慮FIREFOX在發AJAX可能有些BUG,於是在百度上搜索 “firefox AJAX 未執行”,發現有一條BLOG文章描述的問題與本問題類似:
提交表單時會有兩條AJAX請求,第一條由ONSUBMIT函數產生,第二條由SUBMIT本身產生,第一條請求調用了