4

谁能举例说明如何使用CHtml::ajaxbuttonYii 来发布没有表单的元素?

4

3 回答 3

7

快速示例

<?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

于 2012-12-12T10:49:04.757 回答
4

要传递数据,您需要将其添加到您的 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',));
?>

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

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

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

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

于 2012-12-12T23:12:43.600 回答
0

Yii ajax 按钮的更多示例

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>
于 2013-09-27T15:31:29.440 回答