繁体   English   中英

如何在不刷新页面的情况下将数据保存到Mysql

[英]How to save my data to Mysql without page refresh

我认为代码如下:

    <?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可以将页面转回原位,但无法正常工作。因此,我希望我可以发送消息并仅保留此页面而无需刷新。

使用Ajax发布数据,jquery为您提供了很多选择...您还可以实现JavaScript并在for时调用它。 提交(这可以通过在$form->create array('onsubmit'=>'return yourFunction()')添加数组来实现,然后您必须在此函数中重新填写表单数据,并通过ajax和在此函数中非常重要的返回false(这将阻止表单提交),您还可以使按钮代替调用此函数的提交按钮,但是您必须在文本字段中实现,当用户按下Enter键时,它应该发送数据...对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,因此您的页面不会重新加载...

您需要一个类似于以下内容的简单Ajax调用,并修改表格create,使其不会自动发布。

$ajax->form(array('type' => 'post',
  'options' => array(
      'model'=>ChatForm,
      //'update'=>'UserInfoDiv',
      'url' => array(
          'controller' => 'chatforms',
          'action' => 'quick_request'
      )
  )
));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM