2013-02-15 47 views
0

從我的網絡(客戶端)的機器之一返回數據,我正在$.ajax()請求我Nodejs服務器一樣,

//Client : index.html

$.ajax({ 
    type:"post", 
    url:'http://192.168.2.6:8080', 
    data:JSON.stringify({"loginData":{"uanme":"maverick","upass":"asd"}}), 
    success:function(data){console.log(data);alert(data);}, 
    error:function(){alert('Error aala');} 
}); 

和我Nodejs服務器是

//listener.js

var server = require('http').createServer(function (request, response) { 
    var body=''; 
    if(request.method=='POST'){ 
     request.on('data',function(data){ 
      body+=data; 
     }); 
     request.on('end',function(){ 
      console.log(body); 
     }); 
    } 
}).listen(8080); 

這些console.log() s工作非常好。我得到我的節點側發送完全相同的數據,

現在的問題是,在php當我們做一個$.ajax()要求,我們使用echo在我們的PHP文件,將數據發送回客戶端,

如果我想將數據發送回客戶端,我需要在服務器端做些什麼Nodejs (listener.js file)

+1

'response' http://nodejs.org/api/http.html#http_response_end_data_encoding – ashley 2013-02-15 12:52:33

回答

0

解決了這個問題我自己。

問題在於跨域的ajax請求。 我不知道爲什麼這發生,即使我指定我$.ajax通話url:localhost:8080 ...

解決加入我的響應頭 response.setHeader("Access-Control-Allow-Origin", "*"); 問題我。

PEACE

+0

它是跨越原點的,因爲HTML文件是使用':80'通過默認的HTTP提供的,而您發佈到':8080'則完全不同。爲了避免這種情況,您需要設置一個代理來打擊或通過Node提供HTML。 – loganfsmyth 2013-02-15 15:33:09

1
var server = require('http').createServer(function (request, response) { 
    var body=''; 
    if(request.method=='POST'){ 
     request.on('data',function(data){ 
      body+=data; 
     }); 
     request.on('end',function(){ 
      console.log(body); 
      //response.setHeader("Content-Type", ""); set the header to your content type 
      response.write('foo'); // <----- 
      response.end('Dear client, I have cake for you'); // <----- 
     }); 
    } 
}).listen(8080); 

進一步閱讀Node.js Documentation

+0

試過......沒在'$ .ajax'工作.. :(我的'error'處理器在'客戶端'被調用...這個'成功'處理程序何時被調用? – AdityaParab 2013-02-15 12:55:32

+0

正如我剛剛意識到的那樣:你在你的代碼中指定了一個IP地址,我想你正在得到某種類型的跨域錯誤 – Viehzeug 2013-02-15 13:04:47

+0

仍然沒有運氣.. 而關於跨域的事情,現在我在同一臺機器上運行兩個東西... 讓我試着用'--disable-web-security'選項啓動谷歌瀏覽器... – AdityaParab 2013-02-15 13:07:00