我收到了这个回复:
{"success":true,"errorCode":-1,"error":""}
JSON中没有HTML,但是js说它输入了:
uncaught exception: You're trying to decode an invalid JSON String: <pre>{"success":true,"errorCode":-1,"error":""}</pre>
代码: http://www.pasteall.org/30057/javascript
这个问题已得到解决,看起来很奇怪,当你上传文件时,ExtJS提交无法处理json响应。如果你在html制作并转换violà,你得到了。
$this -> output -> set_content_type('text/html');
所有问题
答案 0 :(得分:2)
您体验过的行为实际上是在ExtJS API文档中记录的(很好地掩埋了) - 请参阅Ext.form.Basic.hasUpload()方法的说明。
简而言之,典型的Ajax XMLHttpRequests
不会执行文件上传。它使用隐藏的iframe
元素。因此,引用ExtJS文档:
如果服务器使用JSON发送返回对象,那么 Content-Type标头必须设置为“text / html”...
这正是你最终解决问题的方式 - 所以,这解释了为什么它确实有效。所以它“不是一个错误,而是一个功能”。 :-D
答案 1 :(得分:1)
命令Ext.JSON.decode('{"success":true,"errorCode":-1,"error":""}');
应该正好解析JSON响应。
您确定错误与其说的不完全相同吗?您的回复是否包含<pre>...</pre>
标签?
答案 2 :(得分:1)
很难在不看代码的情况下分析问题,所以如果你可以添加客户端的代码片段,它可能有所帮助。
无论如何,似乎结果以html格式返回,即包含非json数据。检查结果中包含标记的原因。
还检查服务器页面的配置 - 应正确配置以便返回JSON格式。
它还解释了为什么您的结果状态是成功的。这是因为对服务器操作的调用成功,即结果返回到客户端而没有任何错误。
现在,在服务器将结果返回给客户端之后,商店会尝试操作结果数据,但由于内容不是JSON格式,因此没有成功。
答案 3 :(得分:0)
插入文件字段时遇到同样的问题。如果你删除它,它的工作原理。问题不是来自响应本身。您必须在服务器端管理上传文件。
在服务器和客户端之间,响应从'json'转换为html响应。