【问题标题】:Drupal 7 hook_menu() throws a 404Drupal 7 hook_menu() 抛出 404
【发布时间】:2016-03-30 10:07:40
【问题描述】:

我尝试通过 ajax 调用并通过 url 访问它, 它总是给我一个 404

我已经多次刷新我的缓存,甚至尝试删除并重新添加模块(因为我遇到了其他模块的问题并阅读了有关问题的其他响应)

我也在网上查过,但我似乎找不到任何解决方案
(模块名称:TTK_rest)

.模块:

function TTK_rest_menu() {  
    $items = array();
    $items['TTK_rest_api/TTK_task_progression'] = array(
        'page callback' => 'TTK_task_progression_view',
        'access arguments' => array('access content'),
        'access callback' => TRUE,
        'type' => MENU_CALLBACK,
    );

    return $items;
}

function TTK_task_progression_view(){

    return '{"pom":"pom"}';
}

以及对它的 ajax 调用:

$.ajax({                 
                url:'/TTK_rest_api/TTK_task_progression',                   
                data: {"getProgress": "true"},//, "event_id":settings['TTK_task_progression']['jsEvent_id']
                type: "POST",
                contentType: "JSON",
                success: function(data){
                    var $data = $(data);
                    console.log(data);




                },
                error: function(err){
                    console.log("neupe, try again");
                }
            });

【问题讨论】:

    标签: ajax post drupal drupal-7 hook-menu


    【解决方案1】:

    终于找到了解决方案(经过几个小时的搜索后发布了这个问题,如果我知道我会这么快找到答案,我就不会问它了.. 仍然会留下答复以防万一有人遇到同样的问题

    问题的解决方案是我的函数名必须有模块名前缀

    注意:我还有一个名为“TTK_task_progression”的模块,可能是我遇到问题的根源

    解决方案:

    function TTK_rest_menu() {  
        $items = array();
        $items['TTK_rest_api/TTK_task_progression'] = array(
            'page callback' => 'TTK_rest_progression', // <- changed
            'access arguments' => array('access content'),
            'access callback' => TRUE,
            'type' => MENU_CALLBACK,
        );
    
        return $items;
    }
    
    function TTK_rest_progression(){ // <- changed
    
        return '{"pom":"pom"}';
    }
    

    【讨论】:

    • 这不是修复它的原因,函数名称是任意的(只要它是唯一的)。更有可能你没有清除缓存
    • 正如我所说,如果您花时间阅读该帖子,我已经多次刷新我的现金,甚至试图删除并重新复制整个模块,这两个都没有解决我的问题。
    • 也许我错过了,因为你拼错了。无论哪种方式,这个答案都没有解决问题中的问题,除非你有一个非标准版本的核心
    • 我也有第二个模块,叫做 TTK_task_progression,会不会因为相同的前缀而发生冲突?
    • 删除了我之前的评论,因为它不可读(忘记 cmets 没有换行):: 也许英语不是我的主要语言?也许会发生错字?无论哪种方式,这对我来说都是固定的,这是我唯一改变并且有效的东西。就我现在而言,我确实运行标准核心(7.42 版)。我继续回复的唯一原因是,如果有人有其他解决方案,也许他/她会愿意发布它。简单地说“不起作用”的答案对任何人都没有帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-06-11
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    相关资源
    最近更新 更多