【问题标题】:Have issue with response of submit in ExtJS (response in JSON but somewhere HTML entered)在 ExtJS 中提交响应有问题(在 JSON 中响应,但在某处输入了 HTML)
【发布时间】:2012-03-31 18:45:47
【问题描述】:

我收到了这样的回复:

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

所有的问题

【问题讨论】:

  • 伙计们让你快速了解它在调试器中的外观,所以你看不到服务器问题pasteall.org/pic/28472
  • 拜托,至少尝试写出正确的英语。 “你”不是“你”的合适替代品。
  • 对不起我的英语只是我的写作技巧对阅读障碍不好,请原谅我:)
  • 没问题,这不是你的错,有那么多人写得实在是太粗心了,以至于让我很生气。

标签: javascript json extjs extjs4


【解决方案1】:

ExtJS API 文档中实际上记录了您所经历的行为(尽管相当隐蔽) - 请参阅Ext.form.Basic.hasUpload() 方法的描述。

简而言之,典型的 Ajax XMLHttpRequests 不会执行文件上传。它改为使用隐藏的iframe 元素。因此,引用 ExtJS 文档:

如果服务器使用 JSON 发送返回对象,那么 Content-Type 标头必须设置为“text/html”...

这正是您最终解决问题的方式 - 所以,这解释了为什么它确实有效。因此,它“不是错误,而是功能”。 :-D

【讨论】:

  • +1,在 IE11 中,返回 app/json 作为文件导入的响应,提示您将 JSON 保存为文件。设置为 text/html 使 Ext 行为正确。 FF/Chrome 都不关心它是 app/json 还是 text/html,它们的行为都是正确的。
【解决方案2】:

不看代码很难分析问题,所以如果你可以添加你的客户端代码片段,它可能会有所帮助。

反正结果好像是html格式返回的,即包含非json数据。检查为什么标签包含在结果中。

还要检查服务器页面的配置 - 应该正确配置它以返回 JSON 格式。

它还解释了为什么您的结果状态为成功。这是因为调用服务器操作成功,即结果返回客户端没有任何错误。

现在,服务器返回结果给客户端后,存储尝试操作结果数据,但没有成功,因为内容不是JSON格式。

【讨论】:

  • 这几天我调查了类似的问题,所以我会通知你任何进展。
【解决方案3】:

命令Ext.JSON.decode('{"success":true,"errorCode":-1,"error":""}'); 应该可以很好地解析 JSON 响应。

您确定错误与它所说的不完全一致吗?您的回复是否包含&lt;pre&gt;...&lt;/pre&gt; 标记?

【讨论】:

  • 当响应类型为 json(而不是服务器提供 100%)时,我可以给调试它的某处提供屏幕截图(而不是服务器提供 100%)
【解决方案4】:

我在插入文件字段时遇到了同样的问题。如果你删除它,它会起作用。问题不来自响应本身。您必须在服务器端管理上传文件。

在服务器和客户端之间,响应从 'json' 转换为 html 响应。

Uploading images using Node.js, Express, and Mongoose

【讨论】:

    猜你喜欢
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    相关资源
    最近更新 更多