中的代码如下:
<?php echo $form->create( "ChatForm", array("id" => "chat_form", "type" => "post",'class'=>'form_chat',"url" => array( "controller" => "qasamples", "action" => "quick_request" ) ) );
echo $form->hidden( 'ChatForm.pid', array('class'=>'chat_input_hidden') );
echo $form->hidden( 'ChatForm.uid', array('class'=>'chat_input_hidden') );
echo $form->textarea('ChatForm.text',array('id'=>'text_input','rows'=>'14','cols'=>'400','style'=>'resize:none;width:907px;border:0px;','onkeyup'=>"onTextChange()")); ?>
<p style="text-align:center;margin-top:20px;"><button type=submit id="chat_send">Send</button></p>
<?php $form->end(); ?>
这是控制器代码:
public function quick_request(){
if(!empty($this->data))
{
$fields=array('QasampleAnswer.uid','QasampleAnswer.pid','QasampleAnswer.text');
$data=array(
'uid'=>$this->data['ChatForm']['uid'],
'pid'=>$this->data['ChatForm']['pid'],
'text'=>$this->data['ChatForm']['text']);
if($this->QasampleAnswer->save($data))
{
$data_update=array(
'id'=>$this->data['ChatForm']['pid'],
'status'=>'0');
if($this->Qasample->save($data_update))
$this->render('text2');
}
}
}
我可以直接发送邮件吗? 我听说CakePHP和AJAX可以使它工作,但我也是CakePHP和Javascript的新学习者。我希望你们可以帮助我。非常感谢你。页面text2是将页面转回原来的位置,但效果不好。所以我希望我能发送信息,只是保持这个页面而不刷新。
答案 0 :(得分:2)
使用Ajax发布您的数据,jquery为您提供了很多选项...您还可以实现JavaScript并在for时调用它。提交(这可以在$form->create array('onsubmit'=>'return yourFunction()')
添加数组时实现,然后你必须在这个函数中重写表单数据,通过ajax发布它,并且在这个函数中非常重要的返回false(它会阻止表单提交)你也可以创建一个按钮,而不是调用此函数的提交按钮,但是你必须在文本字段中实现,当用户按下回车键时,它应该发送数据...它对onsubmit事物更为舒服。
如果你需要一个例子,我也可以提供一个实用的代码...
我将使用一个没有蛋糕的JavaScript示例
<?php echo $form->create( "ChatForm", array("id" => "chat_form", "type" => "post",'class'=>'form_chat',"url" => array( "controller" => "qasamples", "action" => "quick_request", "onsubmit"=>"return performPostRequest(this)") ) );
这是您用来创建表单的部分
<script type="text/javascript">
function performPostRequest(form) {
parameters="";
for(var i=0;i<form.elements.length;i++) {
if(parameters!="")
parameters+="&";
if(form.elements[i].checked==true || !(form.elements[i].type=="radio" || form.elements[i].type=="checkbox"))
parameters+=form.elements[i].name+"="+encodeURIComponent(form.elements[i].value);
}
$.ajax({
url: form.action,
data: parameters,
type : 'POST',
});
return false;
};
</script>
这是JavaScript函数,我自己使用它所以它应该没有问题:)它模拟你的发布请求,但使用Ajax,因此你的页面将不会重新加载......
答案 1 :(得分:1)
您需要一个简单的Ajax调用,如下所示,并修改表单创建,以便它不会自动发布。
$ajax->form(array('type' => 'post',
'options' => array(
'model'=>ChatForm,
//'update'=>'UserInfoDiv',
'url' => array(
'controller' => 'chatforms',
'action' => 'quick_request'
)
)
));