2014-12-24 8 views
0

PhantomJS 내의 ajax-Requests를 사용하여 몇 가지 작업을하고 있습니다. 불행히도 PhantomJS- 웹 페이지 내에서 ajax-Requests에 대한 30 초 제한 시간이 있습니다.PhantomJS 내의 Ajax 요청에 대한 시간 제한을 설정할 수 있습니까

$.ajax-settings에 timeout 속성을 설정하려고했습니다. 불행히도 이것은 완전히 무시당하는 것 같습니다. 동일하게 적용됩니다 :

$.ajaxSetup({ 
    timeout: 120000 
}); 

그러면 ExtJS 프레임 워크 확장이 있습니다. 불행히도 Ext은 PhantomJS 웹 페이지에서 정의되지 않았습니다. 그래서 이것은 잘 작동하지 않습니다.

제안 사항? $.ajaxSetup 이후

+0

왜 우선 네 배의 시간 초과를 원하십니까? 둘째, 어떻게'$ .ajaxSetup'을 사용하려고 했습니까? 팬텀에서 언제 방아쇠를 당긴거야? 그리고 언제 DOMReady/before onload/onload 이후에 신경 써야 할 첫 번째 요청은 언제입니까? –

+0

응답을 계산하는 데 오랜 시간이 걸리는 특정 웹 페이지가 있습니다. 나중에 정확한 시간 제한을 조정할 것이며, 120은 테스트 목적으로 만 사용됩니다. 웹 페이지를 만들고이 페이지에 jQuery를 삽입합니다. 이 웹 페이지에서 $ .ajaxSetup을 사용합니다. 나는 명시 적으로 보낸 모든 Ajax 요청에 관심이있다. 보통 이것은 페이지로드 이후입니다. – Senad

답변

2

기존의 "설정"또는 timeout을 설정 ajax 요청을 무시하는 데 사용할 수 없습니다 수 있으며, 기본 값을 설정합니다. 그것은 $.ajaxPrefilter으로 오버라이드 할 수 있습니다.

의견에 따르면, 이것은 페이지가로드되기 전에 수행되어야합니다. DOMContentLoaded가 트리거 될 때 첫 번째 아약스 요청이 아직 보내지지 않았다고 가정합니다.

page.onLoadStarted = function(){ 
    page.evaluate(function(){ 
     document.addEventListener('DOMContentLoaded', function(){ 
      $.ajaxPrefilter(function(options, originalOptions, jqXHR) { 
       options.timeout = 120000; 
      }); 
     }, true); 
    }); 
}; 
+0

PhantomJS가'addEventListener' 및'DOMContentLoaded' 이벤트를 지원하는지 실제로 확인하지 않았습니다 –

+0

감사합니다. Artjom, 불행히도 귀하의 제안은 작동하지 않습니다. :(다른 아이디어? – Senad

관련 문제