Sencha触摸创建更新删除使用球衣



我是sencha touch的新人。我需要创建,删除,更新整个jersey java成员记录。这是我的代码

view.js

    Ext.define('bluebutton.view.BlueButton.testing', {
    extend: 'Ext.form.Panel',
    xtype: 'testing',
       requires: [
    'bluebutton.view.BlueButton.TransactionList',
    'bluebutton.view.BlueButton.MemberPopUp',
     'bluebutton.view.BlueButton.MemberDetail',
     'bluebutton.store.BlueButton.MemberList',
    ],
    config: {
     id:'register',
        items :[
              {
                    xtype: 'textfield',
                    name: 'name',
                    label: 'Name'
                },
                {
                    xtype: 'emailfield',
                    name: 'email',
                    label: 'Email'
                },
                 {
                    xtype: 'button',
                    text: 'Send',
                    handler: function(button) {
                        var form = Ext.getCmp('register');
                          values = form.getValues();

        var myStore= new Ext.data.Store({
            model: 'bluebutton.model.BlueButton.MemberList'
        });
            var newModel = Ext.ModelMgr.create({ 'memberId': 1,
                        'name': 2,
                        'imgUrl': 3
                    }, 'bluebutton.model.BlueButton.MemberList');
            myStore.add(newModel);
            myStore.sync();

                    }
                }

        ],

   }
});

Model.js

Ext.define('bluebutton.model.BlueButton.MemberList', {
    extend: 'Ext.data.Model',
    config: {
        idProperty: 'memberModel',
        fields: [
            { name: 'memberId' },
            { name: 'name' },
            { name: 'imgUrl' },
            { name: 'age' },
            { name: 'address' },
            { name: 'pointAvalaible' },
            { name: 'lastVisited' },
        ],

  proxy: {
            type: 'ajax',
            actionMethods: {
                create : 'POST',
                read   : 'POST', // by default GET
                update : 'POST',
                destroy: 'POST'
            },
            url: 'http://localhost:8080/RESTFulExample/rest/json/metallica/testingj'
        },

    }
});

Store.js

Ext.define('bluebutton.store.BlueButton.MemberList', {
    extend: 'Ext.data.Store',
   requires: [
              'bluebutton.model.BlueButton.MemberList'
    ],
    config: {
        grouper: {
            groupFn: function (record) {
                return record.get('name')[0];
            }
        },

           model :'bluebutton.model.BlueButton.MemberList',
           storeId :'memberStore',
           autoLoad:false,
           pageSize: 5,
           clearOnPageLoad: false, 
        data: [

        ]
    }
});

Jersey.java

     @POST
     @Path("/testingj")
//   @Consumes("application/x-www-form-urlencoded")
     @Consumes(MediaType.APPLICATION_JSON)
     public Response too(MultivaluedMap<String, String> form) {
     return Response.status(201).entity(form).build();
 }

但是我一直得到这个错误

XMLHttpRequest cannot load localhost:8080/RESTFulExample/rest/json/metallica/testingj?_dc=1358408853016. 
Origin localhost is not allowed by Access-Control-Allow-Origin.

请指导我解决方案。

你得到这个响应是因为浏览器对跨域请求的安全约束,这意味着从javascript你只能调用那些在同一域的url。由于您的服务运行在8080 post上,所以浏览器认为它来自其他域。

跨域请求有多种方法,其中您应该阅读以下内容:

  1. JsonP
  2. 在服务器上启用CORS

但是由于手机的安全约束不同于桌面的浏览器约束,所以同样的事情可能在手机上工作,即使它在浏览器上不起作用。在Sencha Touch 2中使用rest代理从服务器加载存储数据

在你的情况下,我建议你在你的服务中添加JsonP支持,并使用JsonP代理而不是AJAX。其他代理。

最新更新