2013-05-15 115 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); 
});