我被困住了,任何帮助都会受到赞赏。
我有一个带有ajax链接的表单。
表单链接如下:
<div class="row buttons">
<?php echo CHtml::Button('SUBMIT AJAX',array('onclick'=>'send();')); ?>
</div>
函数send
包含以下内容:
function send()
{
var data=$("#comment-form").serialize();
$.ajax({
type: 'POST',
url: '<?php echo Yii::app()->createAbsoluteUrl("post/ajax"); ?>',
data:data,
success:function(data){
alert(data);
},
error: function(data) { // if error occured
alert("Error occured.please try again");
alert(data);
},
dataType:'html'
});
}
控制器中的ajax操作包含以下内容:
public function actionAjax() {
$model=new Comment;
if(isset($_POST['Comment']))
{
$model->attributes=$_POST['Comment'];
if($model->validate())
{
//$model->save();
print_r($_REQUEST);
return;
}
}
$this->render('comment',array('model'=>$model));
}
}
?>
print_r
输出显示所有字段都已填写:
Array
(
[Comment] => Array
(
[post_id] => 2
[author] => sss
[email] => sss@dldksl.com
[url] => http://www.mysite.com
[content] => sksjdjh
[status] => 1
)
)
当我取消注释$model->save()
时,我会收到完整性错误post_id cannot be null
。
似乎我的模型是空的,如何将模型设置为$_REQUEST
?
提前感谢您的帮助。
答案 0 :(得分:0)
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'customer-form-guest',
'enableClientValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
'afterValidate' => 'js:function(form, data, hasError) {
if(hasError) {
return false;
}
else
{
// return true; it will submit default way
ajaxSubmitHappen(form, data, hasError); and it will submit by ajax function
}
}',
'htmlOptions'=>array('role'=>"form"))); ?>
现在是ajax sub,mit功能
function ajaxSubmitHappen(form, data, hasError)
{
if(!hasError)
{
$.ajax({
"type":"POST",
"url":"<?php echo $url; ?>",
"data":form.serialize(),
"success":function(data){
},
});
}
else
{
alert('error');
}
通过这种方式,您可以通过ajax ....
提交表单