通过GET请求向表达服务器请求数据返回文档而不是数据

时间:2017-08-29 11:50:28

标签: javascript jquery node.js express instagram-api

我正在尝试使用Instagram api来检索一些数据。问题是,当从快速服务器向客户端发回数据时,客户端不会将数据记录到控制台,而是只显示一行只显示一行的html文档:

{"urls":["https://scontent.cdninstagram.com/t51.2885-15/s320x320/e35/21042827_129089451063629_713103852630441984_n.jpg"]}

客户方:

$('#retrieve_photos_btn').click(function(){
    $.ajax({
        url: "/retrieve_photos",
        type: "GET",
        success: function(result){
            console.log(result);
        }
    });
});

App.js:

app.get('/retrieve_photos', function(req, res){
    var options = {
        method: 'GET',
        url: 'https://api.instagram.com/v1/users/self/media/recent/?access_token='+access_token
    }
    request(options, function(error, resp, body){
        if(error) console.log("Retrieving photos failed: " + error);
        var body_parsed = JSON.parse(body);

        var media_urls = [];
        // Iterate over all received media
        for(var i = 0; i < body_parsed.data.length; i++){
            media_urls.push(body_parsed.data[i].images.low_resolution.url);
        }
        res.send( JSON.stringify( {urls: media_urls} ) );
    });
});

2 个答案:

答案 0 :(得分:1)

试试res.json({urls: media_urls})。这将自动为您设置标题。

而不是

res.send( JSON.stringify({urls: media_urls} ) )

答案 1 :(得分:0)

所以我已经发现了问题:按钮位于这样的表格中:

form#retrieve_photos_insta_form(method='GET', action='retrieve_photos')
    button.btn.btn-primary#retrieve_photos_btn Retrieve

因此,当点击按钮时,对/retrieve_photos的调用将通过表单完成,而不是我在问题中写的javascript代码。

更改代码以便没有表单,按钮直接触发javascript代码修复了我的问题。