2013-01-07 3 views
1

Extjs4.1 MVC로 작업하고 있습니다. 내가하려는 일은 서버에 일부 데이터를 저장하는 것이지만 적절한 형식이나 서버에 데이터를 제출하는 방법을 알지 못합니다. 여기 내가 생각하고있는 것이지만 Ajax 호출이 컨트롤러에 있어야한다고 생각하지 않습니다. 모델이나 저장소 파일에 있어야합니다. 내 컨트롤러에서Extjs4 MVC 서버에 항목 저장

방법 :

submit: function(value) { 
    data = {"id": 100, "tdt": "rTk", "val": "445"} // test data 
    Ext.Ajax.request({ 
     url: 'http://test.myloc.com/providerSvc/dbproxy.php', 
     params: { 
      'do':'insert', 
      'object': 'stk', 
      'values': data 
     }, 
     success: function(response){ 
      alert('response.responseText); 
     } 
    }) 
    } 

내 가기 :

Ext.define('STK.store.Stack', { 
extend: 'Ext.data.Store', 
model: 'STK.model.Stack', 
autoLoad: true, 
proxy: { 
    type: 'ajax', 
    api: { 
      read: 'http://test.myLoc.com/providerSvc/dbproxy.php?do=get&object=stack' 
    }, 
    reader: { 
     type: 'json', 
     root: 'data', 
     successProperty: 'success' 
    }, 
    writer: { 
     type: 'json'    
    } 
} 
}); 

내 모델 :

Ext.define('STK.model.Stack', { 
extend: 'Ext.data.Model', 
fields: ['id', 'tdt', 'val'] 
}); 

답변

1

store.sync() 작품 GET 및 POST에 대한 엔드 포인트가 동일한 경우에만.

는 GET을 위해, 는

Store.getProxy().setUrl(StoreUrlForGET); 
Store.load({ 
callback : function(rec, operation, success) { 
if (success) {} 
else {} 
}); 

과 POST는 AJAX를 쓰기위한 URL에 연결하여 또는 다음

extraParams[urlKeys] = paramObject[urlKeys]; 
store.getProxy().setExtraParams(extraParams); 

같은 객체를 생성하여 extraParams을 설정 당신이 할 수 있습니다 다음 주소로 신청하십시오 :

Ext.Ajax.request({ 
url : StoreURLForPOST, 
method : 'POST', 
jsonData : Ext.JSON.encode(YourPostData), 
success : function(response, request) {}, 
failure : function(response, request) {} 
}); 

이 AJAX 요청에 대해서는

Ext.Ajax.setDefaultHeaders({ 
"TokenId" : TokenValue 
}); 

이 코드는 모두 컨트롤러에 저장됩니다.

+0

고마워요. 그게 제가 찾고 있던 것입니다. – reagan

0

나는 저장소가 AJAX 호출을 할 수있는 적절한 장소라고 생각합니다.

하나의 레코드를 상점에 추가 한 다음 "sync()"함수를 호출하여 레코드를 "저장할"수 있습니다. 이 같은

뭔가 (주의 : 테스트하지 코드) :

var store = Ext.create("STK.store.Stack"); 


    var record = Ext.create("STK.model.Stack"); 

    record.set(xvalues); 
    record.isDirty = true; 
    record.setDirty(true); // I don't know if this line is required 

    store.add(record); 


    store.sync({ 
     success: function(batch, options){ 

      alert("OK!")     

     }, 
     failure: function(batch, options){ 
      alert("failure!") 
     } 
    }); 
+0

네, 그렇습니다. 그렇다면 데이터를 서버에 보내서 데이터베이스를 업데이트하는 방법은 무엇입니까? 다른 URL로 게시해야한다는 것에 유의하십시오. http://test.myLoc.com/providerSvc/dbproxy.php?do=insert&object=stack&values={data 여기} ' – reagan

+0

글쎄, 그게 무슨 뜻인지에 따라 달라집니다. " "서버에! ExtJS는 표준 HTTP 메소드 (일반적으로 POST)를 수행합니다. 서버에서 PHP 나 ASP.NET 등과 같이 POST를 처리 할 항목이 있어야합니다. Firefox 또는 Chrome 개발자 도구를 사용하여 브라우저가 서버로 보내는 내용을 정확하게 볼 수 있습니다. 특정 형식의 일반 텍스트라는 것을 알 수 있습니다. 서버는 해당 텍스트를 해석하고 그 텍스트로 무언가를 수행해야합니다. – pvieira

+0

제 경우에는 do = insert – reagan