![](/img/trans.png)
[英]How to pass form data to PHP via AJAX call (CodeIgniter Framework)
[英]How to pass Joomla form data via Ajax call to controller function
在我的Joomla 3.3表單中,我插入了一個ajax腳本來動態更新某些表單字段。 ...腳本的主要部分是
formdata = new FormData();
jQuery.ajax({
type: "POST",
dataType: "json",
timeout: 6000,
url: "index.php?option=com_mycomponent&task=component.save",
data: formdata,
......................
........
觸發ajax腳本后,$ _POST在控制器中完全為空,我無法訪問重要的formdata。
同時,我嘗試了幾種方法,例如
formdata = new FormData($(this)[0]); => nothing happens
要么
formdata = new FormData();
formdata = $(this)[0]; => nothing happens
要么
formdata = new FormData();
form = $(this)[0];
formdata.append("jform", form) => this fills up my $_POST, but with value undefined
如何通過Ajax POST方法將formdata(jform對象)傳遞給控制器?
嘗試使用jQuery的序列化功能:
var formdata = jQuery( "#formid" ).serialize();
這里的formid是表單元素的ID。 希望這可以幫助..
我認識到兩個問題!
1)表單是子表單,顯示在選項卡中。 因此,不應在腳本中分配子表單的ID。 您應該分配主表單的ID
2)應該刪除ajax參數“ contentType:false”
使用此參數,ajax調用將完成其工作!
ajax腳本:
$document->addScriptDeclaration('
jQuery(document).ready(function () {
jQuery("#btn1").click(function() {
alert ("Button");
var formdata = jQuery( "#main-form" ).serialize();
jQuery.ajax({
type: "POST",
dataType: "json",
timeout: 6000,
url: "index.php?option=com_mycomponent&task=component.save",
data: formdata,
processData: false,
success:function(result) {
jQuery.each(result.data, function(i, item) {
..........
});
}
});
return false;
});
});
');
HTML:
form action="<?php echo JRoute::_('index.php?option=com_mycomponent'); ?>"
method="post" name="market_photos" id="subform-form" class="form-validate" enctype="multipart/form-data">
<fieldset class="form-horizontal">
<legend><?php echo JText::_('COM_MYCOMPONENT'); ?></legend>
<ul class="adminformlist">
<table id="table1">
<tbody>
</tbody>
</table>
</ul>
</fieldset>
<div class="span5">
<fieldset class="form-horizontal">
<legend><?php echo JText::_('COM_MYCOMPONENT'); ?></legend>
<div class="control-group">
......
....
希望這些部分能提供更好的見解!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.