2013-04-14 30 views
9

這是我第一次在這裏發佈一個問題,我主要只是一個潛伏在其他問題上的潛伏者,但這是我一直在嘗試弄清楚和爲我的生活不能。使用jQuery AJAX與node.js,處理來自服務器的響應

基本上我在做的是使用AJAX從客戶端跳到服務器,運行一些代碼,搜索外部API給我一些數據,然後我需要這些數據返回到客戶端。這裏是我的代碼......這一切都是如何使用Node.js與快遞

客戶端

$('#search').click(function(){ 
     $.ajax({ 
      type: "GET", 
      url: "/search", 
      dataType: "json" 
     }).done (function (data) { 
      alert(data); 
     }); 
    }); 

服務器端

app.get('/search', function(req, res){ 
     factual.get('/t/places',{q:'starbucks'}, function (error, data) { 
      console.log(data); 
      res.send(data); 
     }); 
    }); 

現在我知道,當#搜尋按鈕被單擊,它會轉到服務器併成功運行該代碼。但是我不知道如何從服務器獲取這些數據,然後返回到客戶端以在那裏使用它。

我發現其他的帖子提到像res.send/res.write/res.end,我已經嘗試了所有這些形式,以我的知識,我永遠無法將這些數據返回給客戶端。

任何提示或可能更好的方式來做到這一點將非常感激。

+0

設置內容類型頭應用/ JSON – lib3d

+0

你的代碼看起來就好了。你可以嘗試下面兩個文件(https://gist.github.com/robertklep/5382069):將兩個文件放在同一個目錄中,啓動服務器('node app.js')並打開http://本地主機:3012 /'。但它並沒有實現'factual.get()',我會建議你檢查'error'來查看是否有可能導致問題的錯誤。 – robertklep

+0

感謝你的小測試robertklep,你是對的,我的代碼都是完全正常的,即使使用了factual.get()。所以這個問題似乎在其他地方... – ribsies

回答

5

試試下面的代碼服務器端:

app.get('/search', function(req, res){ 
    factual.get('/t/places',{q:'starbucks'}, function (error, data) { 
     console.log(data); 
     res.writeHead(200, { 'Content-Type': 'application/json' }); 
     res.end(JSON.stringify(data)); 
    }); 
}); 

它應該工作。代碼客戶端看起來不錯。

編輯:您還可以使用:

res.json(data);