2011-08-14 4 views
0

node.js에 대한 작은 아약스 실시간 검색을 작성하려고합니다.ajax node.js/express 서버로 GET 호출

$('#words').bind('keyup', function(){ 
    getMatchingWords($('#words').val(), function (data){ 
     console.log('recieved data'); 
     console.log(data); 
     $('#ajaxresults').show(); 
    }); 
    }); 

function getMatchingWords(value, callback) { 
    $.ajax('http://127.0.0.1:3000/matchword/' + value + '/', { 
     type: 'GET', 
     dataType: 'json', 
     success: function(data) { if (callback) callback(data); }, 
     error : function()  { if (callback) callback(null); } 
    }); 
} 

여기 내 서버 측 경로 인도 표준시 :

app.get('/matchword/:value', function(req, res) { 
     console.log(req.params.value); 
     res.writeHead(200, {'content-type': 'text/json' }); 
     res.write(JSON.stringify({ test : 'test'})); 
     res.end('\n'); 
}); 

작동을하지만 난 모든 데이터를받을하지는 우선 여기 내 클라이언트 측 코드입니다. 콜백 함수의 데이터는 항상 null입니다. 그래서 내가 뭘 잘못하고 있니? 도움을위한 thx

+0

이것이 node.js와 다른 점은 확실하지만 'content-type'은'Content-Type'이 아니어야합니까? –

+0

아니요, –

답변

2

$ .ajax() 요청을하는 URL은 무엇입니까? 해당 클라이언트 측 JS가 포함 된 페이지가 127.0.0.1:3000에서로드되지 않은 경우 표시되는 오류는 AJAX 요청에 대한 동일한 출처 요구 사항 때문입니다.

7

변경

$.ajax('http://127.0.0.1:3000/matchword/' + value + '/', { 

늦게 결코보다는

$.ajax('/matchword' + value + '/', { 
+0

아니면 dataType으로 jsonp를 사용해야합니다. –

+1

Do not for 답을 받아 들일 수있게 - SO 사랑을 나누십시오. – smathy

1

헤이 더 나은 ...에

나는 또한 함께 간단한 라이브 검색을 넣어 노력하고 있기 때문에이 문제를 찾고 있었어요 express.js 백 엔드가 있습니다.

먼저 로컬 변수에 URL을 넣습니다. 나는 그것이 당신의 문제라고 생각하지 않습니다. 특급/노드 로그에 200 응답이 표시된 경우 특히 그렇습니다. 그때 URL은 괜찮 았어 ...

당신의 함수가 데이터를 반환하지 않았던 것 같습니까?

var search_url = "..."// your url 

function getMatchingWords(value, callback) { 
    $.ajax(search_url, { 
     type: 'GET', 
     dataType: 'json', 
     success: function (data, textStatus, jqXHR) { 
      var returned_data = data; 
      console.log("returned_data ="+returned_data);//comment out or remove this debug after test 
      callback(returned_data); 
     }, 
     error: function(req, status, err) { 
      console.log('something went wrong', status, err); 
     } 
    }); 
} 
당신은 또한 추가/설정 한에 따라 귀하의 헤더를 수정해야 할 수도 있습니다

...

 headers : { Authorization : auth }, 
     type: 'GET', 
     dataType: 'json', 
     crossDomain:true, 

웹 서비스 경우 (코드에서 다른 곳으로 인코딩 된 인증 쌍을되는 인증 변수 어떤 종류의 인증이 필요합니다 ...