尝试在CakePHP 1.3中使用JQuery时没有运气

Inf*_*izz 5 javascript ajax jquery cakephp

我是cakePHP的新手,但由于我无法使jQuery与它一起工作,因此接近退出使用它.

我正在使用cakePHP 1.3,所以认为Html和Js助手已经使Javascript和Ajax冗余,但我真的找不到任何关于如何使用Js的帮助/ api文档就足够了.

我首先要做的就是用jQuery将一些数据发送到cakePHP,然后将一些数据返回到jQuery并提醒()它.出于某种原因,这只是不起作用.这是我的代码:

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');
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

每当我点击带有class ='social'的按钮时,我都会收到警告"wut",这意味着错误.

我有我的activities_controller.php中包含的RequestHandler组件和Javascript,Js和Ajax助手.

另外,test.js和jquery.js使用html-> script()进行链接; 在default.ctp和所有其他jQuery的东西工作,所以它不是那样的.

我也在我的beforeFilter()中为activities_controller.php得到了这个:

if($this->RequestHandler->isAjax())
{
    Configure::write('debug',0);
}
parent::beforeFilter();
Run Code Online (Sandbox Code Playgroud)

有什么想法有什么不对?它是jQuery的东西还是cakePHP的东西?或两者?

提前致谢,

Infinitifizz

PS

我之前从未在jQuery中完成过AJAX,所以也许它与搞乱的东西有关,我只做过简单的javascript AJAX.

Leo*_*Leo 3

不要放弃 CakePHP。虽然有一个学习曲线,但这是值得的。

我会像这样指定网址:

<?php $Url = Router::url(array('controller'=>'activities','action'=>'addActivity'),true); ?>
$('.social').click(function()
{
    $.ajax({
        type: 'POST',
        url: '<?php echo $Url ?>';
        ...
Run Code Online (Sandbox Code Playgroud)

在 CakePHP 方面,我的方法是这样的:

function addActivity()
{
    $this->autoRender = false;
    $this->autoLayout = false;

    App::import('Helper', 'Javascript');
    $javascript = new JavascriptHelper();

    echo($javascript->object(array('result'=>'hello')));
    exit(1);
}
Run Code Online (Sandbox Code Playgroud)

我从不使用,if($this->RequestHandler->isAjax())尽管我确信有好心人会告诉我为什么应该使用。

我更喜欢使用符合 CakePHP 约定的驼峰式方法名称。

请注意,代码中的这一行:echo json_encode(array('result'=>'hello');缺少右括号。

另外,我不会使用 jQuery 来执行像这样的简单 AJAX - 它会使调试变得困难,但这只是个人喜好。