问题:
火狐下连续发送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本身产生,第一条请求调用了