2012-11-23 49 views
1

我正在尝试为AJAX编写一个通用代码。我将以电子商店管理面板的例子来说明我的意思。我们可以编辑一些内容,例如:类别,产品,属性。每个元素都有其输入文本和输入复选框字段等形式。保存将看起来像在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()的视图变量,和getActionName,然后用控制器和动作调用这个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')" />