如何在cakephp中接收和处理json对象?

时间:2011-11-16 15:23:57

标签: jquery json cakephp cordova

我正在使用适用于Android的phonegap开发应用。我希望这个移动应用程序使用jquery和json对象将一些数据(主要是文本)发送到cakephp支持的外部服务器。

我对cakephp和MVC结构比较陌生,并且对如何在蛋糕中进行此操作表示赞赏。我基本上想要phonegap将formdata发送到cakeapplication,然后将蛋糕保存到数据库中。这是我正在考虑用于在phonegap中发送数据的代码:

HTML表单:

    <form method="post" id="infoForm">
       <input type="text" name="first_name" id="first_name" value="" placeholder="First Name"  />
       <input type="text" name="last_name" id="last_name" value="" placeholder="Last Name"  />   
       <input type="text" name="email" id="email" value="" placeholder="Email"  />
      <button type="submit">Submit</button> 
</form>

Jquery的:

$('#infoForm').submit(function() {

    var postTo = '//url to cakeapplication';

    $.post(postTo,({first_name: $('[name=first_name]').val(), last_name: $('[name=last_name]').val(), email: $('[name=email]').val()}),
    function(data) {
        alert(data);
        if(data != "") {
            // do something
        } else {
            // couldn't connect
        }        
        },'json');
    return false;
});

有人可以提供关于如何处理这些数据的一般说明吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

PHP5具有json_encode()json_decode()功能,这些功能非常有用。如果你坚持PHP4,我相信Cake有JSON Compenent。我不能对后者说太多,但是调用PHP5 json_decode()将产生一个PHP对象,您可以使用该对象构造一个Cake数据数组以保存在数据库中。

你想要的是让你的AJAX函数在Cake控制器中调用一个方法(例如add())来处理将数据保存到数据库中。 Cake的save方法需要一个特殊格式的数组,它的结构is detailed here,所以你必须自己手动构建它。

假设您的PhoneGap数据的模型化数据库表称为“Phonegap”(在这种情况下,您将拥有PhonegapModelPhonegapsController)。用于保存的数据数组具有以下结构:

function add() {
  $this->data = array(
    'Phonegap' => array(
      'first_name' => 'value',
      'last_name' => 'value',
      'email' => 'value'
    )
  );
  $this->Phonegap->save($this->data);
}

当您执行AJAX帖子时,JSON对象可能通过控制器中的$this->params['form'](根据here)提供。我不完全确定你对CakePHP有多了解,所以如果有些事情需要澄清,请告诉我。