Sono nuovo per cakePHP ma sono vicino a smettere di usarlo a causa della mia incapacità di far funzionare jQuery con esso.Non ho fortuna quando provo ad usare JQuery con CakePHP 1.3
Sto usando cakePHP 1.3 e quindi ho pensato che gli helper Html e Js avessero reso Javascript e Ajax ridondanti, ma non trovo davvero alcuna documentazione di aiuto/api su come usare Js che sia sufficiente.
Tutto quello che sto provando a fare prima di tutto è inviare alcuni dati a cakePHP con jQuery e poi recuperare alcuni dati in jQuery e alert(). Per qualche ragione questo non funziona. Ecco il mio codice:
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;
}
}
Ogni volta che fa clic sul pulsante con la class = 'sociale' ottengo l'avviso "wut", che significa errore.
Ho il componente RequestHandler e gli helper JavaScript, Js e Ajax inclusi nel mio activity_controller.php.
Inoltre, test.js e jquery.js sono collegati utilizzando html-> script(); in default.ctp e tutte le altre cose di jQuery funzionano, quindi non è così.
Ho anche questo nel mio beforeFilter() per activities_controller.php:
if($this->RequestHandler->isAjax())
{
Configure::write('debug',0);
}
parent::beforeFilter();
Delle idee che cosa è sbagliato? È una cosa jQuery o una cosa cakePHP? O entrambi?
Grazie in anticipo,
Infinitifizz
P.S.
Non ho mai fatto AJAX in jQuery prima, quindi forse è qualcosa a che fare con quello che sta rovinando, ho sempre fatto semplicemente javascript AJAX.
Questo è uno di quei momenti in cui sarebbe davvero utile avere il debug attivato - in particolare a un livello di "1" nel caso in cui vi siano errori PHP. Prova ad abilitare quel livello per le richieste Ajax e vedi se qualcosa è riportato nei tuoi registri di Cake ('/ app/tmp/logs/*'). –
Prova a includere questo nel metodo della torta: $ this-> log ('Un messaggio di debug.', LOG_DEBUG); per vedere se il metodo viene chiamato. Controllare l'output in app/tmp/logs/debug.log Si noti che è possibile passare variabili, anche array al posto della stringa del messaggio. – Leo
Inoltre, utilizzare Firebug in Firefox per monitorare l'attività di rete (nella scheda di rete). – Leo