Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 主干路由404错误_Backbone.js_Routing_Http Status Code 404_Slim - Fatal编程技术网

Backbone.js 主干路由404错误

Backbone.js 主干路由404错误,backbone.js,routing,http-status-code-404,slim,Backbone.js,Routing,Http Status Code 404,Slim,我有一个backbone.js+slim php+jquery移动应用程序 我搜索大学模块,选择一个,然后点击一个链接,生成与该模块相关的讲师列表。这管用 现在我想能够点击讲师列表项来生成讲师详细信息页面,我得到了一个404,我就是搞不清楚 我想我在向讲师介绍细节的方式上有问题 我的API方法是: $app->get('/modules', 'getModules'); $app->get('/modules/:id', 'getModule'); $app->get('/

我有一个backbone.js+slim php+jquery移动应用程序

我搜索大学模块,选择一个,然后点击一个链接,生成与该模块相关的讲师列表。这管用

现在我想能够点击讲师列表项来生成讲师详细信息页面,我得到了一个404,我就是搞不清楚

我想我在向讲师介绍细节的方式上有问题

我的API方法是:

$app->get('/modules', 'getModules');

$app->get('/modules/:id', 'getModule');

$app->get('/modules/search/:query', 'getModulesByName');

$app->get('/modules/:id/lecturers', 'getLecturers');

$app->get('/modules/:id/lecturers/:staffNumber', 'getLecturer');
在这里,我定义了讲师-提取与模块关联的讲师列表:

function getLecturers($id) {
    $sql = "select l.staffNumber, l.firstName, l.lastName, l.moduleNo1, l.moduleNo2, l.email, m.moduleNo
            from lecturertable l, moduletable m
            where m.moduleNo=:id AND (l.moduleNo1=:id OR l.moduleNo2=:id)";

    try {
        $db = getConnection();
        $stmt = $db->prepare($sql);
        $stmt->bindParam("id", $id);
        $stmt->execute();
        $lecturer = $stmt->fetchAll(PDO::FETCH_OBJ);
        $db = null;

        if (!isset($_GET['callback'])) {
            echo json_encode($lecturer);
        } else {
            echo $_GET['callback'] . '(' . json_encode($lecturer) . ');';
        }

    } catch(PDOException $e) {
        echo '{"error":{"text":'. $e->getMessage() .'}}';
    }
}
在这里,我试图通过传递一个“员工编号”来获得一个单独的讲师:

function getLecturer($staffNumber) {
    $sql = "select l.staffNumber, l.firstName, l.lastName, l.moduleNo1, l.moduleNo2, l.email
            from lecturertable l
            where l.staffNumber=:staffNumber";

    try {
        $db = getConnection();
        $stmt = $db->prepare($sql);
        $stmt->bindParam("staffNumber", $staffNumber);
        $stmt->execute();
        $lecturer = $stmt->fetchObject();
        $db = null;

        if (!isset($_GET['callback'])) {
            echo json_encode($lecturer);
        } else {
            echo $_GET['callback'] . '(' . json_encode($lecturer) . ');';
        }

    } catch(PDOException $e) {
        echo '{"error":{"text":'. $e->getMessage() .'}}';
    }
}
到目前为止还不错-我想

我现在尝试在main.js中设置路由:

"":"list",
"list":"list",
"modules/:id":"moduleDetails",
"modules/:id/lecturers":"moduleLecturers",
"modules/:id/lecturers/:staffNumber":"lecturerDetails"
并为最后两条路线提供两个匹配功能:

   moduleLecturers:function (id) {
        var module = new Module({id:id});
        module.lecturers.fetch();
        this.changePage(new ModuleLecturersPage({model:module.lecturers}));
    },

    lecturerDetails:function (staffNumber) {
        var lecturer = new Lecturer({staffNumber:staffNumber});
        var self = this;
        lecturer.fetch({
            success:function (data) {
                self.changePage(new LecturerView({model:data}));
            }
        });
    },
不过,讲师详细信息似乎有问题-控制台指示讲师出现错误。获取代码:GET localhost/api/讲师/讲师404(未找到)。谁能给我指出正确的方向吗

我的讲师模式是:

window.Lecturer = Backbone.Model.extend({


    urlRoot:"../api/lecturers/lecturer",

    initialize:function () {
        this.lecturer = new lecturerCollection();
        this.lecturer.url = '../api/modules/lecturers/' + this.staffNumber + '/lecturer';

    }


});

window.lecturerCollection = Backbone.Collection.extend({

    model:Lecturer,

    url:"../api/lecturers/lecturer",


}); 
意见如下:

window.LecturerView = Backbone.View.extend({

    initialize:function () {
        this.template = _.template(tpl.get('lecturer-details'));
    },

    render:function (eventName) {
        $(this.el).html(this.template(this.model.toJSON()));
        return this;
    }

});
我从讲师列表项链接到讲师详细信息模板,链接为:href='#模块//讲师/'

有谁能告诉我,我是否有什么明显的遗漏——我正在尝试很多方法来解决这个问题,但没有取得多大的成功


谢谢

通过调用
讲师.fetch
我认为您获取的模型的url与RESTful API不匹配。也许你应该调用
讲师.讲师.fetch
来取回集合?你是否检查了请求是否已发送到你想要的url?让我们检查一下问题是在服务器端还是客户端,您是否应该在
讲师详细信息
回调中接收两个参数,如
id
staffnumber
?@Ingro-我试过了,我认为这里有问题,但不是讲师.讲师.fetch或讲师.讲师.fetch工作。你认为我遗漏了对模块的引用吗?这可能与Cyclone所说的有关?@Pablo-我通过Fiddler Web调试器检查,请求符合404。