Jestem nowy w CakePHP, ale jestem blisko rezygnacji z używania go z powodu mojej niezdolności do pracy z jQuery.Nie powodzenia, gdy próbuję użyć JQuery z CakePHP 1.3
Używam CakePHP 1.3 i tak myślę, że pomocnicy Html i Js sprawili, że Javascript i Ajax są zbyteczne, ale nie mogę znaleźć żadnej dokumentacji pomocy/api, jak używać Js, która jest wystarczająca.
Wszystko, co próbuję zrobić przede wszystkim, to wysłać trochę danych do CakePHP z jQuery, a następnie pobrać trochę danych z powrotem do jQuery i alert() to. Z jakiegoś powodu to po prostu nie działa. Tu jest mój kodu:
test.js
$('.social').click(function()
{
$.ajax({
type: 'POST',
url: '/activities/add_activity',
data: 'type=social',
dataType: 'json',
success: function(data)
{
alert(data);
},
error: function()
{
alert('wut');
}
});
});
activities_controller.php
function add_activity()
{
if($this->RequestHandler->isAjax())
{
$this->autoRender = false;
$this->autoLayout = false;
$this->header('Content-Type: application/json');
echo json_encode(array('result'=>'hello');
return;
}
}
każdym razem, kiedy kliknij przycisk z class = 'społeczny' pojawia się alert "PW", co oznacza, błąd.
Mam komponent RequestHandler oraz pomocników JavaScript, Js i Ajax zawartych w moim actions_controller.php.
Ponadto, test.js i jquery.js są połączone za pomocą html-> script(); w default.ctp i wszystkie inne rzeczy jQuery działają, więc to nie to.
Mam również w moim beforeFilter() dla activities_controller.php:
if($this->RequestHandler->isAjax())
{
Configure::write('debug',0);
}
parent::beforeFilter();
Jakieś pomysły co jest nie tak? Czy jest to rzecz jQuery, czy ciastko? Lub oba?
Dzięki z góry,
Infinitifizz
PS:
Nigdy wcześniej nie robiłem AJAX w jQuery, więc może to ma coś wspólnego z tym, co się zepsuło, robiłem tylko proste AJAX javascript.
Jest to jeden z tych przypadków, kiedy byłoby naprawdę pomocne włączanie debugowania - szczególnie do poziomu "1" na wypadek błędów PHP. Spróbuj włączyć ten poziom dla żądań ajax i zobacz, czy cokolwiek jest zgłaszane w twoich logach Cake'a ('/ app/tmp/logs/*'). –
Spróbuj dodać to do swojej metody: $ this-> log ("Komunikat do debugowania.", LOG_DEBUG); aby sprawdzić, czy wywoływana jest metoda. Sprawdź dane wyjściowe w aplikacji/tmp/logs/debug.log Pamiętaj, że możesz przekazywać zmienne - nawet tablice zamiast ciągu wiadomości. – Leo
Używaj Firebuga w Firefoksie do monitorowania aktywności sieci (na zakładce net). – Leo