簡體   English   中英

如何通過Ajax調用將Joomla表單數據傳遞給控制器​​功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM