我有一个带有上传字段的 ExtJs 表单。当我提交表单时,Accept-header 是错误的。响应是 JSON,但发送的 Accept-header 是:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
我有根据的猜测是它是浏览器的默认值。
在 Chrome 中,这会导致警告:资源解释为文档,但使用 MIME 类型应用程序/json 传输。
在 FireFox 中,这会导致文件下载。
结论:我必须将 Accept-header 更改/设置为application/json
Sencha 的文档说它有一个headers
参数,但我已经测试过,对于文件上传它不起作用。有评论说不支持。(在另一个线程中发现相同的结果)
摆脱文件下载/设置正确的Accept-header的任何建议......它不一定是ExtJs解决方案。如果你能给我一个简单的 javaScript 解决方案来在文件上传表单上设置接受标头,我可能可以将它塑造成 sencha 框架。
更新:
ExtJS 表单提交:
form.submit({
url: API_URLS.addDocument,
waitMsg: 'Uploading your document...',
headers: {
"Accept": 'application/json' //doesn't work
},
success: function() {
...
},
failure: function(){
...
}
});
在幕后,它创建了一个与此类似的普通表单:
<form action="API_URLS.addDocument" enctype="multipart/form-data" method="post">
<input type="file"/>
</form>
可以通过javaScript( submit()
)提交