1

我对Backbone.history.start({pushState: true});何时激活有疑问

我使用骨干路由器'example/:id':'test',浏览器返回错误

GET myhost:1337/example/js/views/test.js 404(未找到)

例如,我想使用 Backbone 进行旋转,myhost:1337/example/test而无需请求 nodejs。

si,我不知道为什么,

可能是我的服务器 Nodejs?或者可能是我的代码写得不好?提前致谢

我的服务器代码是

    //var http = require('http');
var path = require('path'),
    express = require('express'),
    routes = require('./routes/index'),
    http = require('http'),
    app = require('express')();

app.configure(function(){
    //app.set('view options',{layout: false });
    app.set('port', process.env.PORT || 1337);
    app.use(express.bodyParser()),
    app.use(express.static(path.join(__dirname, 'public')));
    app.use(app.router); // you need this line so the .get etc. routes are run and if an error within, then the error is parsed to the ned middleware (your error reporter)
    app.use(function(err, req, res, next) {
        if(!err) return next(); // you also need this line
        console.log("error!!!");
        res.send("error!!!");
    });
});

app.get('*',function(req,res){
    res.setHeader('content-type', 'text/javascript');
    res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.redirect('http://localhost:1337#'+req.url);
});


http.createServer(app).listen(app.get('port'), function () {
    console.log("Express server listening on port " + app.get('port'));
});
4

1 回答 1

0

这与您的服务器有关。我敢打赌你在输入路线时没有按住 shift 键,所以你的服务器中有这样的东西

app.get('example?:id':'test', function() {});

当你应该有:

app.get('example/:id':'test', function() {});

这个块:

app.post('/addPlace?:?',routes.addPlace);
app.get('/searchPlace?:q',routes.searchPlace);
app.post('/showPlace',routes.showPlace);
app.get('/showPlaceById?:id',routes.showPlaceById)
app.post('/deletePlace?:?',routes.deletePlace);

看到?' 无处不在?这应该是:

app.post('/addPlace',routes.addPlace);
app.get('/searchPlace/:q',routes.searchPlace);
app.post('/showPlace',routes.showPlace);
app.get('/showPlaceById/:id',routes.showPlaceById)
app.post('/deletePlace',routes.deletePlace);

如果你改变它,/showPlaceById/:id将返回你所期望的。

于 2013-07-29T18:38:33.143 回答