Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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
Javascript Node.js和Express—将JSON对象从SoundCloud API发送到前端使其成为字符串_Javascript_Json_Node.js_Http_Express - Fatal编程技术网

Javascript Node.js和Express—将JSON对象从SoundCloud API发送到前端使其成为字符串

Javascript Node.js和Express—将JSON对象从SoundCloud API发送到前端使其成为字符串,javascript,json,node.js,http,express,Javascript,Json,Node.js,Http,Express,我一直在使用http.get调用SounbdcloudAPI方法来接收我想要传递给浏览器的JSON对象。我可以确认我收到的数据是一个对象,因为我在数据上调用的方法类型打印出它是一个对象 var getTracks = http.get("http://api.soundcloud.com/tracks.json?q="+query+"&client_id=CLIENT_ID", function(tracks) { tracks.on('data', function (chun

我一直在使用http.get调用SounbdcloudAPI方法来接收我想要传递给浏览器的JSON对象。我可以确认我收到的数据是一个对象,因为我在数据上调用的方法类型打印出它是一个对象

var getTracks = http.get("http://api.soundcloud.com/tracks.json?q="+query+"&client_id=CLIENT_ID", function(tracks) {
    tracks.on('data', function (chunk) {
        console.log(typeof(chunk)); // where I determine that I receive an object
        res.send(chunk);
    });
    //console.log(tracks.data);
}).on("error", function(e){
    console.log("Got error: "+e);
});
但是当我检查在浏览器中发出的AJAX请求中接收到的数据时,我发现接收到的数据又有一种字符串类型,我通过调用typeof知道这一点

$('#search').click(function(e){
  e.preventDefault();  
  var q = $("#query").val();
  $.ajax({ 
        url: '/search',
        type: 'POST', 
        data: { 
          "query": q
        }, 
        success: function(data){
          alert(typeof(data));
          alert(data);
        }, 
        error: function(xhr, textStatus, err){
          alert(err);
        }
      })
  });    

我非常感谢您的帮助,因为我不知道问题出在哪里,或者我是否在错误的地方寻找答案,也许这与我使用SoundCloud的HTTP API有关,JSON是一个字符串。我假设您需要一个表示JSON字符串的对象。 只需使用以下方法

var obj = JSON.parse(data);
另一个例子是:

var jsonStr = '{"name":"joe","age":"22","isRobot":"false"}';
var jsonObj = JSON.parse(jsonStr);
jsonObj.name //joe
jsonObj.age // 22 

我还没有读过所有这些,但我会注意到没有JSON对象这样的东西;根据定义,任何JSON都将是字符串。请尝试JSON。parsedata。我认为这在大多数情况下对其他人来说都是答案,所以我会同意,但是。但在我的例子中,当我调用JSON.parse时,前端出现了一个意外的输入端错误。JSON字符串格式不正确有什么原因吗?请检查您的JSON字符串是否有效…有许多在线JSON验证器。