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

Requesting data through GET request to express server returns document instead of data

我正在尝试使用 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} ) );
    });
});

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

而不是

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

所以我已经找到了问题:按钮在这样的表单中:

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

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

更改代码以便没有表单和按钮直接触发 javascript 代码解决了我的问题。