Как динамически загрузить контроллер и действие (Zend Framework + AJAX)?

Я пытаюсь написать универсальный код для 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 ответ

Решение
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')" />
Другие вопросы по тегам