2013-01-17 45 views
0

我是sencha touch的新款。我需要在整個jersey java中創建,刪除,更新成員記錄。這裏是我的代碼Sencha touch創建更新通過使用球衣刪除

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. 

請指引我的解決方案。

回答

1

由於瀏覽器對跨源請求的安全限制,您可以獲得此響應,這意味着您可以只從javascript調用那些位於相同域中的url。由於你的服務正在8080上發佈,所以瀏覽器從其他域中考慮它。

有多種方法可以做到跨域請求,在外面,你應該瞭解:

  1. JSONP
  2. 在服務器

但由於移動設備的安全約束啓用CORS來自不同桌面瀏覽器的限制,所以即使它在瀏覽器中不起作用,移動設備也可以使用同樣的東西。有關更多詳細信息,請查看:Loading store data with rest proxy from server in Sencha Touch 2

就您而言,我建議您將JsonP支持添加到您的服務中,並使用JsonP代理而不是AJAX & REST代理。

+0

感謝您的回覆。 jsonp允許創建和更新記錄嗎? – user998405

+0

JsonP允許您發出GET請求,並且按照慣例,寫入操作不應在GET請求中完成,但如果不可避免,則可以根據需要創建或更新。我建議你閱讀JsonP的工作原理 – ThinkFloyd

相關問題