Как получать и обрабатывать объекты JSON в CakePHP? - PullRequest
3 голосов
/ 16 ноября 2011

Я занимаюсь разработкой приложения, используя телефонный разрыв для Android.Я хочу, чтобы это мобильное приложение отправляло некоторые данные (в основном текстовые) на внешний сервер, поддерживаемый cakephp, используя объекты jquery и json.

Я относительно новичок в cakephp и структуре MVC и был бы признателен за общие советыо том, как поступить с этим в торте.Я в основном хочу, чтобы phonegap отправлял форм-данные в приложение Cake, и чтобы Cake сохранил эти данные в базе данных.Это код, который я собираюсь использовать для отправки данных в телефонной пробке:

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 Ответ

4 голосов
/ 16 ноября 2011

PHP5 имеет функции json_encode() и json_decode(), которые очень полезны. Если вы застряли на PHP4, я думаю, что для Cake есть JSON Compenent . Я не могу сказать много о последнем, но вызов PHP5 json_decode() приведет к PHP-объекту, который вы можете использовать для создания массива данных Cake для сохранения в базе данных.

Вам нужно, чтобы ваша функция AJAX вызывала метод (например, add()) в контроллере Cake, который обрабатывает сохранение данных в вашей базе данных. Метод Cake save ожидает специально отформатированный массив, структура которого подробно описана здесь , так что вам придется создавать его самостоятельно.

Скажем, ваша смоделированная таблица базы данных для данных PhoneGap называется "Phonegap" (в этом случае у вас будет PhonegapModel и PhonegapsController). Массив данных для сохранения будет иметь следующую структуру:

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

Объект JSON, вероятно, доступен через $this->params['form'] (согласно здесь ) в контроллере, когда вы выполняете запись AJAX. Я не совсем уверен, сколько вы уже знаете о CakePHP, поэтому, если некоторые вещи требуют разъяснения, просто дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...