2013-07-04 8 views
1

이 함수를 사용하여 내 node.js 서버와 일련의 교차 도메인 URL에서 html 코드를 가져 오려고합니다. 붙여 넣기 한이 함수를 사용하면 비동기 적으로 처리 할 수 ​​있습니다. 필요한 html; 그러나, 나는이 기능 밖에서 진행되는 모든 일을 제대로 수행하는 데 어려움을 겪고 있습니다. 이 기능을 동 기적으로 수행하면,이 함수 밖의 모든 것이 제대로 작동하지만, 아약스 호출은 성공하지 못하고 this.url은 정의되지 않습니다.node.js 서버의 동기 아약스

jquery 노드 모듈을 사용하여이 btw를 수행합니다. [형식 오류 : 정의의 특성 '헤더'를 읽을 수 없습니다]

어떤 도움을 크게 감상 할 수

이 콘솔에 기록됩니다 오류입니다.

function myFunction(catname, myurl){ 

var htmlresult=""; 

    $.ajax({ 
    type: "GET", 
    url : "http://"+myurl, 
    dataType: 'html', 
    context: this, 
    async: false, 
    cache: false, 
    error: function(xhr, status, ethrown){ 
     console.log("THERE WAS AN ERROR"); 
     console.log(this.url); 
     console.log(catname); 
     console.log(status); 
     console.log(ethrown); 

     htmlresult = myurl; 
    }, 
    success : function(result){ 
     console.log(this.url); 
     console.log("SUCCESS"); 
     console.log(catname); 
     //console.log(result); 

     htmlresult = result; 
    } 
}) 

return htmlresult; 
} 

시간을내어 읽어 주셔서 감사합니다.

+0

Node.js에서 jQuery를 사용하고 있습니까? – Bergi

+0

나중에 내가 사용하고있는 jquery 노드 모듈입니다. 어쩌면 그게 뭔가 관련이 있나? – jabelman

+0

그래, 아마도 그곳에있는 버그 일거야. 오류의 라인/파일 정보를 보여줄 수 있습니까? – Bergi

답변

0

이 경우 동기화 요청 모드를 사용해서는 안됩니다. 노드를 사용하고 동기식으로 작업을 수행하려면 약속/비 개념을 사용해야합니다. 아래 예제 참조

var Deferred = require("promised-io/promise").Deferred; 
var def = new Deferred(); 

request(this.getUrl("statusObject"), function(err, resp, body) { 
    if(!err){ 
     def.resolve(body); 
    } 
} 

def.promise.then(function(val){ 
    //Do something. 
}); 
관련 문제