Extjs 5.0.1如何以正确的方式发送JSON POST请求

时间:2016-10-26 09:36:24

标签: javascript json extjs

美好的一天。我是Extjs的新手,我已经被插入一个已经开始并且独自留下的大项目中。 我当然正在研究框架,但是我对每一段代码都感到震惊。

现在,我想了解在POST中使用JSON参数进行休息调用的正确方法。

这是我的实际情况:

我在视图文件中定义了一个组合框(名为setup.js),我将一个监听器放在select上,如下所示

emptyText: 'Select a country',
                listConfig: {
                    itemTpl: [
                        '<div><span class="" style="margin-right: 10px;"><img src="resources/flags/{id}.png"></span>{name}</div>'
                    ]
                },
                listeners: {
                    /*created the after render listener to wait until the store is loaded. then I set the default value*/
                    select: 'onCountrySelect',
                    afterrender: 'onAfterRenderCombo'
                }

在另一个文件上,名为setupController.js我已经定义了所有函数:

onCountrySelect: function(a){
        console.log("selected ",a.value);
        var controller = this,
        userData = controller.getUserData();
        console.log("user.id",userData.id);         
    },

现在,在每个国家/地区选择操作,我都要向服务器发送JSON,以“设置”用户使用的国家/地区。调用还取决于环境,因为开发者与生产环境不同,所以我想我必须做出某种代理,但也许这是后来的问题,现在我想设置一个调用这个选择,所以我将把这个逻辑用于我将来要做的所有调用。

问题是,有没有正确的方法来定义它?我需要一个型号吗?或者在商店里打电话好吗?我需要一个...代理(?)或商店或“外部”的东西,所以我可以在其他地方使用相同的电话?这是一个例子吗?

男/女,提前谢谢。

1 个答案:

答案 0 :(得分:0)

喜欢这里写的http://docs.sencha.com/extjs/6.0.2/classic/Ext.data.proxy.Ajax.html

使代理与同一域上的服务器一起使用:

  

AjaxProxy不能用于从其他域检索数据。如果您的应用程序在http://domainA.com上运行,则无法从http://domainB.com加载数据,因为浏览器具有内置安全策略,禁止域通过AJAX相互通信。

个人让控制台与多个服务器连接,我使用像http://docs.sencha.com/extjs/6.0.2/modern/Ext.Ajax.html#method-request这样的ajax请求

Ext.Ajax.request({
        url:'',
        method:'POST',
        params:{
            json:YOURJSON
        },
        success:function(response){

        },
        failure:function(response){

        }
    });

我正在使用由ajax代理扩展的个人代理来执行ajax调用,而不会出现不同的域问题。如果您想要自制代理,可以在此处阅读有关代理的所有信息:http://docs.sencha.com/extjs/6.0.2/classic/Ext.data.proxy.Proxy.html

或者只是您可以使用为您执行ajax请求的外部JS类。