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

标签 javascript ajax cakephp

我认为代码如下:

    <?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(); ?>

这是 Controller 代码:

    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 发布它,并且非常重要的 return 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,因此您的页面不会重新加载...

关于javascript - 如何在不刷新页面的情况下将我的数据保存到Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25520541/

相关文章:

javascript - 如何使用 javascript 或 jquery 以表格格式显示 JSON 对象?

javascript - 如何决定有多少 HTML 必须由 JavaScript 生成?

javascript - AJAX post success.alert后如何显示警报?

Javascript ajax同步请求不起作用

php - CakePHP 2.2 是否有终止支持日期?还是版本?

javascript - Internet Explorer 告诉我前进和后退的缓存已取消

javascript - 悬停子项时突出显示父项

javascript - jScrollPane 和 AJAX

mysql - cakephp 1.3 模型中的交叉连接表

php - $this->设置 ('title' , 'Title Name' );在 CakePHP 3.x 中不工作