图片上传遇readyState 0错误,疑与.htaccess重写有关?
图片上传AJAX报错排查与解决(关联.htaccess重写规则)
问题概况
- 相同的图片上传表单+AJAX代码在其他页面正常运行,但在配置了以下.htaccess重写规则的页面出现错误:
RewriteRule ^new-listing listing.php?item=$1 [NC,L,QSA] - 报错信息:
{"readyState":0,"status":0,"statusText":"error"} - 怀疑重写规则导致AJAX请求路径异常
解决建议
1. 修正AJAX请求的绝对路径
当前AJAX使用相对路径../functions/main_media_upload.php,页面URL被重写后(从listing.php?item=xxx变为/new-listing),相对路径的基准目录发生变化,导致请求指向错误位置。
把请求URL改为绝对路径,示例:
url: '/functions/main_media_upload.php',
2. 在.htaccess中排除上传脚本目录
现有重写规则可能误拦截了对functions目录的请求,需要在规则前添加排除逻辑:
# 排除functions目录,跳过后续重写 RewriteRule ^functions/ - [L] # 原有重写规则 RewriteRule ^new-listing listing.php?item=$1 [NC,L,QSA]
3. 阻止表单默认提交行为
当前代码未阻止表单的默认同步提交动作,可能导致页面跳转、中断AJAX请求。在submit事件处理开头添加阻止代码:
$('#upload_media_form').on('submit',(function(e) { e.preventDefault(); // 新增此行,阻止默认提交 var formData = new FormData(this); // 后续AJAX逻辑... }))
4. 验证请求实际路径
打开浏览器开发者工具的Network面板,查看AJAX请求的实际URL,确认是否返回404或其他错误状态,以此排查路径是否真的正确。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

