2013-06-24 3 views
0

내 로컬 서버의 PHP scriptjQueryCasperJS 함수로 호출하려고 시도했지만 어떻게 든 결과를 얻지 못합니다.jQuery로 PHP 스크립트에서 결과를 가져올 수 없습니다

호출되는 URL 중요하지 않습니다
casper.then(function() { 
    var result = casper.evaluate(function() { 
     var result = $.get('http://localhost/test.php', function() {}); 
     return result; 
    }); 
    result = JSON.stringify(result); 
    this.echo(result); 
    this.exit(); 
}); 

, 항상 같은 결과를 제공합니다 : 여기 내 코드입니다

  • XAMP 서버가 실행 : 내가 체크 한
    {"abort":{},"always":{},"complete":{},"done":{},"error":null,"fail":{},"getAllRe 
    sponseHeaders":{},"getResponseHeader":{},"overrideMimeType":{},"pipe":null,"prog 
    ress":{},"promise":{},"readyState":1,"setRequestHeader":{},"state":{},"statusCod 
    e":{},"success":null,"then":{}} 
    

    및 작동
  • PHP 파일이 있습니다
  • 다른 URL도 작동하지 않으며 del 아이 버스 결과는 또한 jQuery를 기능 $.load()
  • jQuery를 제대로 넣었 (결과는 다음 "널 (null)"입니다) 작동하지 않습니다
  • (위 참조)
  • (그렇지 않으면 CasperJS에서 오류가 발생합니다) 나는 단순히 작동 반환하는 경우 올바르게 (예 : return "test";)

무엇을 해야할지 모르겠다. 어떤 제안을 주셔서 감사합니다!

답변

1

나는에 대한 Esailija에, 당신은 콜백 성공 기능

casper.then(function() { 
    var result = casper.evaluate(function() { 

     var $return = ''; // initiate $return 

     var async = $.ajaxSetup()['async']; 
     $.ajaxSetup({'async':false}); // Set async to false 

     $.get('http://localhost/test.php', function(data) { 

      $return = data; // test.php return data is saved to $return 

     }); 

     $.ajaxSetup({'async': async }); // Set async to back to original value 

    }); 
    result = JSON.stringify($return); 
    this.echo(result); 
    this.exit(); 
}); 

이의 유일한 단점 내에서 반환 데이터를 얻어야한다, 또한 $.ajaxSetup();

및 허위로 비동기를 변경 감사를 추천 할 것입니다 그것을 지적하면 요청이 완료 될 때까지 페이지가 '멈추게됩니다.'

+0

대단히 감사합니다! 귀하의 솔루션 후에 나는 "webSecurityEnabled : false"를 추가해야했지만 그것은 또 다른 이야기입니다. – Crayl

+2

당신은 이것에 대한 단점을 언급하지 않고 있습니다. 요청이 보류 중일 때 페이지가 충돌하는 것처럼 보입니다. 어쨌든 반응이 즉각적이므로 실제로는이를 알 수 없습니다. – Esailija

+0

@Esailija 예, 페이지가 멈추는 것처럼 보입니다. ** IF ** DOM을로드하기 전에이 스크립트를 실행하고 있습니다. 이 작업을 실행하면 응답이 지연 될 수 있습니다. –

1

$.get은 비동기 적이므로 콜백이 호출 되어야만 그 결과를 사용할 수 있습니다.

0

$ .get()에 대한 jQuery 문서에서는 $ .get()이 페이지의 내용을 반환하지 않습니다. http 전송 인스턴스를 사용 중입니다.

관련 문제