在yii的Ajax按钮发布

时间:2012-12-12 10:08:11

标签: ajax yii

有人可以举例说明如何使用Yii CHtml::ajaxbutton发布没有表单的元素吗?

3 个答案:

答案 0 :(得分:6)

快速示例

<?php
echo CHtml::ajaxSubmitButton('ButtonName',Yii::app()->createUrl('advert/LoadAdvertFromSay'),
                    array(
                        'type'=>'POST',
                        'data'=> 'js:{"data1": val1, "data2": val2 }',                        
                        'success'=>'js:function(string){ alert(string); }'           
                    ),array('class'=>'someCssClass',));
?>

<强> ajaxSubmitButton()

data

中需要ajaxoptions个参数

答案 1 :(得分:3)

要传递数据,您需要将其添加到ajax数组中,例如:

<?php
echo CHtml::ajaxSubmitButton('ButtonName',Yii::app()->createUrl('advert/LoadAdvertFromSay'),
                    array(
                        'type'=>'POST',
                        'data'=> 'js:$("#dataContainer").serialize()',
                        'success'=>'js:function(string){ alert(string); }'           
                    ),array('class'=>'someCssClass',));
?>

在这种情况下,将提交标识为dataContainer的元素中的所有输入类型元素,并且可以通过$ _POST访问。

显然,JS可能更复杂,你可以从某些元素中获取值,并构建自己的对象,例如:

'data' => 'js:{"field1": $("#input1").val(), "pageTitle": $("title").text() }'

然后,在您的控制器中,您可以访问$_POST["field1"]$_POST["pageTitle"],但我通常倾向于通过CHttpRequest::getParam()访问项目,因为我可以获得POST或GET值,例如CHttpRequest::getParam('field1')

答案 2 :(得分:0)

更多examples of Yii ajax button

echo CHtml::ajaxButton(
    $label = 'Click me', 
    $url = '/', 
    $ajaxOptions=array (
        'type'=>'POST',
        'dataType'=>'json',
        'success'=>'function(html){ jQuery("#your_id").html(html); }'
        ), 
    $htmlOptions=array ()
    );

//Output
<a href="#" id="yt0">Click me</a>

<script type="text/script">
    jQuery('body').on('click', '#yt0', function () {
        jQuery.ajax({
            'type': 'POST',
            'dataType': 'json',
            'success': function (html) {
                jQuery("#your_id").html(html);
            },
            'url': '/',
            'cache': false,
            'data': jQuery(this).parents("form").serialize()
        });
        return false;
    });
    });
</script>