Javascript 如何通过Ajax调用将Joomla表单数据传递给控制器函数

Javascript 如何通过Ajax调用将Joomla表单数据传递给控制器函数,javascript,ajax,view,joomla,http-post,Javascript,Ajax,View,Joomla,Http Post,在Joomla3.3表单中,我插入了一个ajax脚本来动态更新一些表单字段。 …脚本的主要部分是 formdata = new FormData(); jQuery.ajax({ type: "POST", dataType: "json", timeout: 6000, url: "index.php?option=com_mycomponent&task=component.save", data: formdata, ...................... ........

在Joomla3.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脚本后,$\u POST在控制器中完全为空,我无法访问重要的formdata

与此同时,我尝试了几种方法

formdata = new FormData($(this)[0]); => nothing happens


如何通过Ajax POST方法将formdata(jform对象)传递给控制器?

尝试使用jQuery的序列化功能:

var formdata = jQuery( "#formid" ).serialize();

这里formid是form元素的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:

formaction=“”
method=“post”name=“market\u photos”id=“subform form”class=“form validate”enctype=“multipart/form data”>
...... ....

我希望这些部分能提供更好的见解

还是一样的问题$_帖子以空结尾:-(你能把你的html、脚本和动作代码放在这里吗?$document->addScriptDeclaration('jQuery(document).ready(function(){jQuery('btn1')。点击(function(){alert('Button”);var formdata=jQuery('market_photo-form”)。序列化();jQuery.ajax({type:'POST',dataType:'json“,超时:6000,url:“index.php?option=com_mycomponent&task=component.save”,数据:formdata,processData:false,contentType:false,success:function(result){jQuery.each(result.data,function(i,item){………};});return false;}););现在是html部分:form action=“”method=“post”name=“market\u photos”id=“market\u photo-form”class=“form validate”enctype=“multipart/form data”>
    。。。。。
    var formdata = jQuery( "#formid" ).serialize();
    
    $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;
            });
        });
    ');
    
    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">
    
    ......
    ....