ExtJS - 添加到服务调用存储的Ajax调用

时间:2013-07-10 21:29:44

标签: ajax extjs extjs-mvc extjs4.2

我是ExtJS的新手,我是Flex开发人员。我正在尝试对我们的Flex App中的页面进行模拟。我正在尝试进行基本服务调用以访问我们的服务器(在与ExtJS App相同的域上)并将数据添加到Store中,然后将其填充到我们的dataGrid中。

我在线完成了教程,但现在我正在尝试修改它以使用我们的Flex应用程序中的服务。我能够进行服务电话,并获得成功的回复;但是,看起来响应是您在浏览器中粘贴URL时得到的结果(这是一个WSDL)。

它没有达到服务中的实际方法,也没有返回数据。我做了一个简单的soapclient.js JS项目并且能够使用该工具获取数据,但是我没有使用Ajax获取数据。我认为我做的事情很简单,但无法弄清楚。

    Ext.define('DG.store.PhoneCalls', {

    extend: 'Ext.data.Store',

    model: 'DG.model.PhoneCall',

    autoLoad: true,



    proxy: {

    type: "ajax",

    dataType: 'xml',

    contentType: 'text/xml; charset=utf-8',

    data: '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  <SOAP-ENV:Header>    <ns0:HeaderID xmlns:ns0="http://urlgoeshere.com/">      <ns0:string>thisisastring</ns0:string>    </ns0:HeaderID>  </SOAP-ENV:Header>  <SOAP-ENV:Body>    <tns:getRecaPayments xmlns:tns="http://urlgoeshere.com/">      <arg0>false</arg0>    </tns:getRecaPayments>  </SOAP-ENV:Body></SOAP-ENV:Envelope>',

    url: "https://urlgoeshere.com.com/Payments_UISupport_HTTPRouter/RecaCompFacadeService/RecaCompFacadeService.wsdl",

    reader: {

        type: 'xml',

        root: 'return',

        record: 'contents'

    },

    afterRequest:function(req, res) {

        console.log("Result: " + req.operation.response);

    }

}

});

当我调试时,这不是针对此服务的方法。它返回整个WSDL响应,显示该服务可用的所有方法。

在Flex中,我没有问题。此应用程序位于同一个域中,因此不是问题。我尝试在ExtJS中使用soap,但它也没有用。我确定这是一个用户错误! =)

我需要做的就是:

  1. 请致电此服务:https://urlgoeshere.com.com/Payments_UISupport_HTTPRouter/RecaCompFacadeService/RecaCompFacadeService.wsdl

  2. 传入false boolean

  3. 在该服务中点击此方法:getRecaPayments

  4. 此服务返回一堆数据,如下所示:

    <return>
     <contents>
      <name>Joe</name>
      <ssn>111112222</ssn>
     </contents>
     <contents>
      <name>Bob</name>
      <ssn>222342222</ssn>
     </contents>
     <contents>
      <name>Jan</name>
      <ssn>555443333</ssn>
     </contents>
     </return>
    

    这是我的模型PhoneCall:

    Ext.define('DG.model.PhoneCall', {
        extend: 'Ext.data.Model',
        fields: ['name', 'ssn']
    });
    

1 个答案:

答案 0 :(得分:0)

刚做了一些研究 - 并在文档中找到了两个必需的SOAP类。

这些文件确实不包含在src / data / soap目录中......

http://docs.sencha.com/extjs/4.2.2/source/Proxy3.html http://docs.sencha.com/extjs/4.2.2/source/Reader3.html#Ext-data-soap-Reader

这里详细解释,比以往任何时候都要好:

http://docs.sencha.com/extjs/4.2.2/#/guide/soap