ExtJS中提交的响应有问题(JSON中的响应,但HTML输入的地方)

Have issue with response of submit in ExtJS (response in JSON but somewhere HTML entered)

本文关键字:响应 输入 HTML JSON 提交 有问题 ExtJS      更新时间:2023-09-26

我得到这个响应:

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

所有的问题

您所经历的行为实际上在ExtJS API文档中有文档记录(尽管隐藏得很好)-请参阅Ext.form.Basic.hasUpload()方法的描述。

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

如果服务器使用JSON发送返回对象,则"内容类型"标头必须设置为"text.html"。。。

这正是你最终解决问题的方式——所以,这解释了为什么它确实有效。所以它"不是一个bug,而是一个特性"-D

在没有看到代码的情况下很难分析问题,所以如果您可以添加客户端的代码片段,这可能会有所帮助。

无论如何,结果似乎是以html格式返回的,即包含非json数据。检查结果中包含标签的原因。

还要检查服务器页面的配置——应该对其进行正确配置,以便返回JSON格式。

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

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

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

你确定错误并不是它所说的那样吗?你的回复中是否意外包含了<pre>...</pre>标签?

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

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

请参阅使用Node.js、Express和Mongoose 上传图像