如何在使用代理在 ext js 商店中发布请求时发送 JSON

Posted

技术标签:

【中文标题】如何在使用代理在 ext js 商店中发布请求时发送 JSON【英文标题】:How to send a JSON while posting a request in ext js store using proxy 【发布时间】:2016-05-27 09:56:29 【问题描述】:

我是 ext js 的新手。我正在尝试将请求正文中的 JSON 传递给服务调用。我正在使用以下代码在请求中发送 JSON。执行此操作时收到错误响应。

Ext.define('MyStore.store.dashboard.graphs.Temp', 
extend: 'Ext.data.Store',
     proxy: 
            type: 'ajax',
            url: 'abc.php', 

            headers: 
                'Content-Type': 'application/json'
            ,

           params :  JSON.stringify(
                locationID: [],
                startDtTime: "2009-06-10T11:00:00",
                endDtTime: "2016-05-10T11:00:00",                   
                GroupValue:"",
            ) )

但是当我使用 Ext.Ajax.request 时,我得到了正确的响应:

Ext.Ajax.request(

url: 'abc.php',  

jsonData : data, 

success: function(hxr) 
    console.log(hxr);    
,

failure: function(hxr) 
    console.log(hxr);      
)

我在论坛上看到过类似的帖子。我的问题是,如果没有办法在使用 store 的请求中设置 json 那么我可以将从 Ext.Ajax.request 获得的响应传递给我的商店吗?

【问题讨论】:

商店不是这样运作的,你必须通过store.load(params:);传递你的参数 我不确定这是怎么做到的。你能解释一下我如何将它与我的代码集成吗? 没有更多关于你到目前为止所做的事情的信息,我不这么认为。你用的是什么版本的 ExtJS?您正在使用控制器、视图控制器或您在哪里执行您发布的代码? 我正在使用 ext js 6。目前我还没有编写任何控制器或视图控制器。我只是想理解这一点,因为我需要稍后构建一个原型。我刚刚使用了 ext js 图表,我根据商店中的值填充了一个图表。当我使用静态 JSON 文件加载它时,这工作正常。但现在我需要将请求中的某些参数作为 JSON 发送到服务器以获得我的图表的响应。 您是否尝试添加记录然后同步? 【参考方案1】:

ExtJS 总是将 POST 值发送为 JSON,except when you submit a form with a file upload field。

But ExtJS store uses GET method for read by default,而Ext.Ajax.request uses POST by default if parameters are defined。

但你可以明确告诉商店的代理使用 POST 方法:

proxy:
    actionMethods:
        read:'POST'
    ,
    extraParams : 
        locationID: [],
        startDtTime: "2009-06-10T11:00:00",
        endDtTime: "2016-05-10T11:00:00",                   
        GroupValue:"",
    

【讨论】:

谢谢。我已经尝试过了,但它仍然不起作用。我检查了 chromes 开发者控制台,它发送了一个 post 请求,这很好,但在请求的正文中没有显示任何值。 @NullPointer 对不起,我的错,这是 extraParams 用于存储代理,我已经更新了代码。 这似乎也不起作用。虽然现在我碰巧在请求有效负载中看到一些文本,例如 '0=%7B&1=%22&2=l&3=o&4=c&5=a' 谢谢。但我需要将这些参数作为 JSON 对象传递,并在发布请求的正文中

以上是关于如何在使用代理在 ext js 商店中发布请求时发送 JSON的主要内容,如果未能解决你的问题,请参考以下文章

带有 Ext JS 的 MVC 架构中 store.load() 的动态代理 URL

如何在 ext js 4.1 中重新加载商店?

Extjs使用商店代理api; CRUD

Ext js动态更新分页工具栏的总数

使代理使用扩展的 Ext.data.Operation

从 localStorage 获取值以在 Sencha Touch AJAX 代理中使用