火狐下SUBMIT表单覆盖POST请求问题

在火狐浏览器中连续发送两个POST请求时,第一个请求丢失。通过对后台日志的对比分析,发现问题仅出现在火狐浏览器中。通过修改第一个POST请求为同步发送解决了此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:
火狐下连续发送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本身产生,第一条请求调用了.postSUBMITPOST.post方法改为同步方法,即$.ajax…async:false ,再次在火狐下进行提交尝试,问题解决。

`webdriver.Firefox()` 是Python Selenium库中用于启动Firefox浏览器的一个实例化方法,它通常用于Web自动化测试中。当你创建一个新的`webdriver.Firefox()` 对象时,它会打开一个新的 Firefox 窗口,并准备进行网页操作。 如果你想要通过这个Firefox对象进行POST提交,你需要配合Selenium的一些基础操作步骤: 1. **初始化驱动**: ```python from selenium import webdriver driver = webdriver.Firefox() ``` 2. **导航到目标URL**: ```python driver.get('http://your-url.com') ``` 3. **找到表单元素**,这可能是HTML中的`<form>`标签,需要定位其`action`属性对应的URL和提交按钮等: ```python form_element = driver.find_element_by_tag_name('form') # 或者使用其他定位方式 action_url = form_element.get_attribute('action') submit_button = form_element.find_element_by_name('_submit') # 假设提交按钮name为"_submit" ``` 4. **填充表单数据**,如果你有输入字段,可以使用`.send_keys()`方法: ```python input_field = driver.find_element_by_name('your-input-field-name') input_field.send_keys('your-value') ``` 5. **发送POST请求**: 使用`driver.execute_script`或直接对`form_element.submit()`发起POST请求,因为直接submit可能会有兼容性问题,推荐使用JavaScript: ```python js_code = f"document.getElementById('{form_element.id}').submit();" driver.execute_script(js_code) ``` 6. **处理响应**: 提交后,你可能希望检查服务器返回的状态码,或者等待页面更新后再做进一步的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值