extjs - 当响应不是json时如何提交表单?

时间:2013-12-10 10:04:41

标签: json forms extjs extjs4

据我所知,当我提交表单时,根据the documentation默认情况下,ExtJs将响应解析为JSON。

在我的情况下,服务器返回HTML,我想在Panel中显示。当我使用getForm().submit()提交from时,ExtJs将抛出有关无效JSON的错误:

Ext.JSON.decode(): You're trying to decode an invalid JSON String

如何告诉ExtJs不要尝试解析响应?我可以使用response object访问文本。

3 个答案:

答案 0 :(得分:2)

我不知道您是否正在寻找严格的ExtJS框架解决方案。但是,您似乎可以直接使用xmlhttprequest来解决您的问题,因为您希望将html直接推送到dom

var xmlhttp = new XMLHttpRequest();
xmlhttp.open('GET','/myPath/here',false);
xmlhttp.send();
var html = xmlhttp.responseText;
//assign value

答案 1 :(得分:0)

Ext.form.Basic配置中,您可以定义自己的readererrorReader

答案 2 :(得分:0)

最后,我不可能去工作form.submit()的ExtJs。我需要使用Ext进行实施。由于这是我的应用程序中的常见模式,因此有一个简短的解决方案很重要。

这是我最终找到的(我有一个包含表格的模态窗口):

var values = me.up('form').getValues(),
panel = Ext.create('My.view.MyPanel', {
    xtype: 'panel',
    loader: {
        url: Paths.ajax + 'sav_vpc/douane.php',
        method: 'get',
        params: values,
        autoLoad: true
    }
});
me.up('window').close()

此解决方案比me.up('form').getForm().submit()解决方案具有另一个优势:

虽然.getForm().submit()是异步的,但.getValues()是同步的。因此,可以立即关闭窗口。