如何动态加载控制器和动作(Zend Framework + AJAX)?

时间:2012-11-23 21:35:32

标签: jquery zend-framework zend-controller

我正在尝试为AJAX编写通用代码。我将在电子商店管理面板的示例中展示我的意思。我们可以编辑一些内容,例如:类别,产品,属性。这些元素中的每一个都有其输入文本和输入复选框字段等形式。保存看起来像在Gmail中,当您在字段中写入内容时,它会自动向服务器发送请求。对于每个模块(类别,产品,属性......),我有一个控制器和一个动作,例如版本editAction,删除deleteAction等。有时我在一个视图中有多个关于控制器的表单。在主布局中,我有一个JS代码:

$.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地址 - 我想动态地执行此操作或在表单中进行管理。

1 个答案:

答案 0 :(得分: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')" />