Я работаю с CakePHP 1.3.7 и пытаюсь сделать следующее:
На данной странице пользователь может щелкнуть ссылку (или изображение, или кнопку, неважно), которая передает параметр, который сохраняется в базе данных. НО, все это, без обновления страницы .
Я проводил некоторые исследования и считаю, что для этого мне нужно использовать AJAX. Однако я не могу найти хороший пример / объяснение того, как это сделать.
Я думаю, что идея состоит в том, чтобы создать ссылку, используя AJAX, который вызывает контроллер / действие, которое получит переменную в качестве параметра, и выполняет операцию по ее сохранению в соответствующем поле / таблице БД.
У кого-нибудь есть небольшой пример того, что я хочу сделать? Или, может быть, укажите мне учебник, который объясняет это ... Большое спасибо заранее!
EDIT
Ну, спасибо вам, ребята, за ваши ответы. Они не работают напрямую, но я думаю, что все ближе к тому, что я хочу. Вот что я делаю сейчас:
У меня есть этот код на мой взгляд:
<div id="prev"><a>click me</a></div>
<div id="message_board"> </div>
Я называю этот файл JS:
$(document).ready(function () {
$("#prev").click(function(event) {
$.ajax({data:{name:"John",id:"100"}, dataType:"html", success:function (data, textStatus) {$("#message_board").html(data);}, type:"post", url:"\/galleries\/add"});
return false;
});
});
И мое add action в моих галереях контроллер выглядит так:
function add() {
$this->autoRender = false;
if($this->RequestHandler->isAjax()) {
echo "<h2>Hello</h2>";
print_r($this->data);
$this->layout = 'ajax';
if(!empty($this->data)) {
$fields = array('phone' => 8, 'modified' => false);
$this->User->id = 6;
$this->User->save($fields, false, array('phone'));
}
}
}
При нажатии на элемент '#prev' я получаю ответ от действия add , я знаю, потому что текст "Hello" напечатан внутри # message_board . И это происходит без обновления страницы, поэтому мне это нужно. Моя проблема в том, что я не могу заставить функцию $. Ajax () отправлять какие-либо данные, когда она попадает в контроллер, $ this-> data пуста, поэтому никогда не заходит внутрь , если , который сохраняет информацию в базу данных (сейчас это просто, но я хочу, чтобы она сохраняла данные, полученные из представления).
Кто-нибудь может увидеть, что я делаю не так? Как я могу отправить данные на контроллер?