Как использовать RequestHandler для приема данных из ajax? - PullRequest
2 голосов
/ 02 июля 2011

Я пытаюсь отправить данные формы ajax на cakephp cotroller

function loadtooltip(obj, $user_id) {
 //AJAX
 var req = Inint_AJAX();
 req.onreadystatechange = function () { 
      if (req.readyState==4) {
           if (req.status==200) {
                displaytooltip(obj, req.responseText);
           } 
      } 
 };

 req.open("POST", "http://127.0.0.1/cakeplate/tooltips/tooltip/", true); 
 req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 req.send($user_id); 

};

этот контроллер

<?php
Class TooltipsController extends AppController{
var $name = 'Tooltips';
var $uses = array('Reply','User');
var $component = array('RequestHandler','Javascript','Ajax');
var $layout =  'tooltip';


function tooltip($user_id=NULL){

                if(!empty($user_id)){
                    $tooltip = $this->Reply->User->findById($user_id);
                    $this->set('tooltip',$tooltip);
                }

}
}
 ?>

Мне нужен кто-то, чтобы помочь мне изменить код

1 Ответ

1 голос
/ 04 июля 2011

как вы сейчас делаете в контроллере, вы не сможете получить user_id, потому что это переменная, переданная через метод GET http.

Эта переменная будет доступнанапример, если вы сделаете запрос GET для этого URL: http://example.com/cakeplate/tooltips/tooltip/1, где 1 будет вашим $ user_id.

Если вы отправите запрос как POST, вы сможете получить доступ к значениям в этом var * 1007.* $ this-> data Таким образом, вы сможете обрабатывать запрос на основе переменной, передаваемой в контроллер.

Еще одна проблема, с которой вы столкнетесь, заключается в том, что этот контроллер должен будет обработатьпредставление, поэтому я предлагаю вам взглянуть на http://book.cakephp.org/view/1238/REST,, там вы можете увидеть, как вы можете создать маршрут, который заставит контроллер анализировать другое представление, это другой пользовательский макет, такой как json (тот, который я предлагаюв этом случае), а затем вы можете показать в этом представлении только значение json.

Последнее, но также важное, я бы посоветовал вам использовать jQuery для выполнения части javascript, я думаю, что это будетбыть проще, вы можете проверить это на http://api.jquery.com/jQuery.get

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