javascript - 尝试将 JQuery 与 CakePHP 1.3 一起使用时运气不佳

标签 javascript ajax cakephp jquery

我是 cakePHP 的新手,但由于无法让 jQuery 与它一起工作,我快要放弃使用它了。

我正在使用 cakePHP 1.3,因此我认为 Html 和 Js 助手已经使 Javascript 和 Ajax 变得多余,但我真的找不到任何关于如何使用 Js 的足够的帮助/api 文档。

我首先要做的就是使用 jQuery 将一些数据发送到 cakePHP,然后将一些数据返回到 jQuery 并对其进行 alert()。出于某种原因,这是行不通的。这是我的代码:

测试.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;
    }
}

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

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

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

我在 activities_controller.php 的 beforeFilter() 中也有这个:

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

有什么问题吗?它是 jQuery 的东西还是 cakePHP 的东西?还是两者兼而有之?

提前致谢

无穷无尽

附言

我以前从未在 jQuery 中使用过 AJAX,所以这可能与搞砸了有关,我只使用过简单的 javascript AJAX。

最佳答案

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

我会像这样指定 url:

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

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

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

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

    echo($javascript->object(array('result'=>'hello')));
    exit(1);
}

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

我更喜欢符合 CakePHP 约定的驼峰命名法。

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

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

关于javascript - 尝试将 JQuery 与 CakePHP 1.3 一起使用时运气不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3566946/

相关文章:

javascript - 如何以 Angular 获取复选框值?

javascript - Iframe 中的 SCORM 类(class)找不到 API

javascript - 图标列表及其在 iron-icons 中的名称

php - 在哪里创建以及如何调用 View 中的函数——cakephp

php - CakePHP:总是使用 clear() 而不是 create()?

javascript - 与 Karma 集成测试

javascript - 使用 Ajax POST 到 REST 服务失败

php - 从 XMLHttpRequest .responseText 中提取数据

javascript - 通过 ajax 加载的输入不会出现在请求正文中

php - Cake Bake - 在数据源中找不到模型 GroupsUser 的表 groups_users