刷新时获取json数据

时间:2013-12-24 12:41:51

标签: javascript node.js angularjs

我有一个博客应用,每个帖子都有自己独特的固定链接,例如/post/Dh3hdjs*其中Dh3hdjs*是唯一的固定链接。我的问题是,当帖子成功创建后,它会重定向到特定的链接像/post/Dh3hdjs*,但刷新页面后,它变成了一个json文件。这就是我到目前为止所拥有的

的NodeJS(express.js)

app.get('/post/:permalink', contentHandler.displayPostByPermalink);

displayPostByPermalink

this.displayPostByPermalink = function(req, res, next) {
        "use strict";
        var permalink = req.params.permalink;
        posts.getPostByPermalink(permalink, function(err, post) { //get post data 
                                                             //by using permalink
            "use strict";
            if (err) return next(err);
            res.send(200,post) //if success send the data to angularjs controller
        });
    }

getPostByPermalink

this.getPostByPermalink = function(permalink, callback) {
        "use strict";
        posts.findOne({'permalink': permalink}, function(err, post) {
            "use strict";

            if (err) return callback(err, null);

            callback(err, post); // if found any return post data
        });
    }

Angularjs

function PostCtrl($scope, $http, $location, $routeParams) {
$http.get('/post/' + $routeParams.permalink).
    success(function(data) {
      $scope.data =data;
    }).error(function(err) {
      alert("something wrong")
    });
}

的HTML

<div class='pure-u-1'>
<h1>{{data.title}}</h1>
<h2>{{data.preview}}</h2>
   {{data.content}}
</div>

工作正常,直到我新鲜页面,它将变成json文件

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案可以是将服务器api路径从'/ post /:permalink'更改为'/ api / post /:permalink'这将停止发送JSON文档并让AngularJS控制页面refreshals。

还有另一种识别ajax请求的技术:

var is_ajax_request = req.xhr;

识别ajax请求的关键是,相同的url可用于运行page和api。