有人可以举例说明如何使用Yii CHtml::ajaxbutton
发布没有表单的元素吗?
答案 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)
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>