2013-05-15 88 views
1

我有以下教程如何从node js请求值并返回给用户请求但不成功。无法在nodejs中获取返回值?

这里我的JavaScript代码..

put('id','coment',function(data) { 
     var obja = JSON.parse(data); 
     var items = Object.keys(obja); 
     items.forEach(function(item) { 
      alert(obja[item].field1); //its no result value  
     });       
}) 
function put(id, data, callback) { //call from here to nodejs 
     $.ajax('http://localhost:8000/' + id + '/', { 
      type: 'POST', 
      data: JSON.stringify(data), 
      dataType: 'json', 
      success: function(data) { if (callback) callback(data); }, 
      error : function() { if (callback) callback(false); } 
     }); 
    } 

,在这里我的NodeJS

connection.query("SELECT field1,field2,field3 from table", function(e, row) { 
        if(e) 
        { 
         console.log('An error occured: '+e) 
        } 
        else 
        { 
         try{       
          res.write(JSON.stringify(row)); //send value back to user requested 
          res.end(); 
         }catch(ex){ 
          console.log('errror' + ex) ; 
         } 
        } 
}); 
控制台

,查询是负载正常,但是当我尝试返回给用户请求,它就会没有价值。

我的问题是,为什么我不能发回到用户请求?

+1

你肯定'row'包含数据?尝试使用'console.log'并查看'row'中的实际内容 – Alan

+2

您不应该需要'var obja = JSON.parse(data);'因为它已经被解析,因为您设置了'dataType:'json' 。你也有任何控制台中的错误? – loganfsmyth

+0

完美地工作......感谢@loganfsmyth – ltvie

回答

0

你不应该需要var obja = JSON.parse(data);,因为它已经被jQuery解析,因为dataType: 'json'被设置。

也是基于你已经证明obja的代码是一个Array所以不是这样的:

var items = Object.keys(obja); 
items.forEach(function(item) { 
    alert(obja[item].field1); 
}); 

只是这样做:

obja.forEach(function(row){ 
    alert(row.field1); 
});