2012-11-23 3 views
1

AJAX 용 범용 코드를 작성하려고합니다. 나는 e-shops 관리자 패널의 예에서 내가 의미하는 것을 보여줄 것이다. 카테고리, 제품, 속성과 같이 우리가 편집 할 수있는 것들이 있습니다. 이러한 각 요소에는 입력 텍스트 및 입력 체크 박스 필드 등이있는 양식이 있습니다. 저장은 Gmail에서와 같이 보이며, 필드에 뭔가 쓸 때 자동으로 서버에 요청을 보냅니다. 각 모듈 (카테고리, 제품, 속성 ...)에 대해 컨트롤러와 액션을 가지고 있습니다. 에디션 editAction, deleteAction 등을 삭제할 때가 있습니다. 가끔 컨트롤러에 관한 한 가지 이상의 폼이 있습니다. 메인 레이아웃에서 나는 JS 코드가 :컨트롤러와 동작을 동적으로로드하는 방법 (Zend Framework + AJAX)?

$.ajax({ 
     url: 'http://localhost/fa.fronted/public/en/controller/action/', 
     type: 'POST', 
     data: 'websiteid='+iWebId+'&formid='+iFormId+'&formfieldid='+iFieldId+'&'+dataName+'='+dataValue, 
     success: function(data) { 
      if(data=='OK') { 
       $('#ajaxmessage').text('All changes saved'); 
      } 
      else{ 
       $('#ajaxmessage').text('Error: ' + data); 
      } 
     }, 
     error: function() { 
      $('#ajaxmessage').text('Error'); 
     } 
    }); 
} 
내가 다른 컨트롤러와 액션에 대해 서로 다른 URL 주소를 사용하고 싶습니다

-이 dynamicaly을하거나 형태를 관리 할.

+4

게시물을 실제 질문으로 끝내십시오. 당신의 문제는 무엇입니까, 무엇을 시도 했습니까, 무엇이 효과가 없었습니까? – markus

+0

하나의 Ajax 기능을 모든 컨트롤러에 게시하고 모든 게시물에 대해 URL을 동일하게 유지해야합니다. –

+0

내가 맞다면 요청을 통해 컨트롤러와 액션 이름을 얻고, 부모 컨트롤러를 만들고, 모든 컨트롤러가 확장되고 preDispatch()에서 $ this -> _ request-> getControllerName() 뷰 Vars를 설정할 수 있습니다. getActionName을 호출 한 다음 컨트롤러와 액션을 args로 사용하여이 js를 호출하십시오. –

답변

1
function onChangeCallback(controller,action,formId){ 
    var data = getFormData(formId); 
    // or if you want to save by field $(this).val() will get you the input value 
    // make the ajax request from the code posted in your question 
} 

<input type="text" name="username" onchange="return onChangeCallback('<?=$this->ControllerName?>' 
,'<?=$this->actionName?>','myForm')" />