对ExtJS中的提交响应有疑问(JSON中的响应,但输入的HTML)

时间:2012-03-15 09:07:23

标签: javascript json extjs extjs4

我收到了这个回复:

{"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'); 

所有问题

4 个答案:

答案 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响应。

请参阅Uploading images using Node.js, Express, and Mongoose