2012-11-10 3 views
4

AJAX를 사용하여 Node.js 서버로 데이터를 보내려고하지만 동일한 문제 인 수신 문제에 계속 부딪 히고 있습니다. 당신이 http://nodejs.org/api/http.html에 얻을 수있는 기본 HTTP 서버 (심지어 sudo는 포트 8080) ECONNREFUSED 오류를 일으키는 몇 가지 이유를 들어AJAX가 Node.js 서버에 데이터를 전송하는 중

var objects = [ 
     function() { return new XMLHttpRequest() }, 
     function() { return new ActiveXObject("MSxml2.XMLHHTP") }, 
     function() { return new ActiveXObject("MSxml3.XMLHHTP") }, 
     function() { return new ActiveXObject("Microsoft.XMLHTTP") } 
    ]; 
    function XHRobject() { 
     var xhr = false; 
     for(var i=0; i < objects.length; i++) { 
      try { 
       xhr = objects[i](); 
      } 
      catch(e) { 
       continue; 
      } 
      break; 
     } 
     return xhr; 
    } 
    var xhr = XHRobject(); 
    xhr.open("POST", "127.0.0.1:8080", true); 
    xhr.setRequestHeader("Content-Type", "text/csv"); 
    xhr.send(myText); 
    console.log(myText); 

그래서 나는 시도했다 : 여기

는 클라이언트 측 자바 스크립트/AJAX 코드 이 간단한 코드 :

var http = require('http'); 

http.createServer(function(req, res) { 
    console.log('res: ' + JSON.stringify(res.body)); 
}).listen(8080, null) 

그러나 인쇄는 계속됩니다. res: undefined.

반면에 AJAXPOST은 콘솔에서 오류를 유발하지 않는 것 같습니다.

그래서 내 질문 경우 다음 내가 AJAXPOST 요청에 의해 전송 된 텍스트를 검색 할 수있는 간단하지만 고체 Node.js를 서버가 어떻게

  • 를?

감사합니다.

편집 : 테스트는 127.0.0.1 (로컬 호스트)에서 수행됩니다.

EDIT2 : http://nodejs.org 홈 페이지에있는 예제를

var http = require('http'); 

    var http = require('http'); 
    http.createServer(function (req, res) { 
     res.writeHead(200, {'Content-Type': 'text/plain'}); 
     res.end(); 
     req.on('data', function(data) { 
     console.log(data); 
     }) 
    }).listen(1337, '127.0.0.1'); 
    console.log('Server running at http://127.0.0.1:1337/'); 

답변

3

봐 :이 업데이트 된 Node.js를 코드입니다.

var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(1337, '127.0.0.1'); 
console.log('Server running at http://127.0.0.1:1337/'); 
  1. Node.js를 요청 객체는 일반 텍스트로 몸을 요청하지 않았습니다. 청크 단위로 처리해야합니다 (dataevent).
  2. 클라이언트에 응답을 보내려면 res.end를 사용하여 요청을 끝내야합니다.

업데이트 :이 코드는 잘 작동합니다

:

var http = require('http'); 
http.createServer(function (req, res) { 
    var body = ''; 
    req.on('data', function(chunk) { 
    body += chunk.toString('utf8'); 
    }); 
    req.on('end', function() { 
    console.log(body); 
    res.end();  
    }); 
}).listen(8080); 
+0

내가 다시 아무것도 보내지 않으 그냥 클라이언트 (AJAX)가 전송 한 일을받을 수 있습니다. AJAX는 GET 요청이 아니라 POST입니다. –

+0

요청은 모든 경우에 완료해야합니다. 클라이언트는 요청이 끝날 때까지 대기합니다. 데이터를 다시 보낼 필요가없는 경우 res.end();로 요청을 완료하십시오. 매개 변수없이. –

+0

답변 업데이트 확인 –

관련 문제