CakePHP通过ajax将数据从视图发送到控制器

时间:2015-03-28 09:59:30

标签: jquery ajax cakephp view controller

我是cakephp的新手。我正在尝试制作一个简单的ajax请求来修改屏幕的一部分。我在网上找到了几个例子,但我不能把它们混在一起! 当我单击 btnNewPhon 按钮时,我想将输入 txtPhon 的内容发送到控制器adminController。然后在视图中,将更新div dataToShow 以显示控制器发送的数据。

我差不多了,但我不知道如何将输入 phonID phonTxt 的内容发送到控制器,我不知道如何获取控制器中的数据。这是我的代码。

查看 index.ctp

<div id="dataToshow"></div>
<input id="phonID" type="text">
<input id="phonTxt" type="text">
<button id="btnNewPhon">New</button>

Ajax视图 ajax_response.ctp

<?php echo $content; ?>

Javascript admin.js (包含在视图中):

$(function() {
  $('#btnNewPhon').click(function() {
    a = $("#txtPhon").val ;
    $.ajax({
      type:"POST",
      datatype:'json',
      cache: false,
      data: <<< I don't know what to put here >>>,
      url:"admin/addPhon",
      update:"#dataToshow"
    });
  });
});

控制器 adminController.php

public function addPhon() {

     if ($this->request->is('ajax')) {
        // Treatment of the new data here

        //create current date in chosen format
        $new_data = '##'.$this->request->param('phonID').'-'.$this->request->param('phonTxt').'##';

        //set current date as content to show in view
        $this->set('content', $new_data); 

        //render spacial view for ajax
        $this->render('ajax_response', 'ajax');

     }
}

感谢!!!

1 个答案:

答案 0 :(得分:1)

我明白了。

1)在视图中,我需要在字段周围添加表单并为其设置名称属性,例如:

<form id="goNewPhon">              
    <input id="phonID" name="phonID" type="text">
    <input id="phonTxt" name="phonTxt" type="text">
</form>

2)在js中,我将表格序列化:

data: $("#goNewPhon").serialize(),

3)在控制器中,我使用数据来获取传递的参数:

$this->request->data['phonTxt']

现在我工作了。