2011-08-30 4 views
3

jQuery 아약스 성공 처리기에 문제가 있습니다. 성공 처리기에서 발생하는 모든 자바 스크립트 런타임 오류는보고되지 않고있는 것 같습니다 (Firefox 오류 콘솔에는 오류가 표시되지 않음). 그리고 오류 알림없이 디버깅하려고하면 나를 미치게 만듭니다. 누군가 내 코드의 단순화 버전을 살펴보고 내가 문제를 일으킬 수있는 무언가를하고 있는지 알려줄 수 있습니까?jQuery 아약스의 오류가보고되지 않습니다.

그렇지 않은 경우 누군가 Firefox에서이를 테스트하여 오류 메시지가 나타나지 않고 나에게 화를 내지 않는다고 (또는 Firefox 설치 또는 문제로 인해 문제가 있음) 확인해야합니다. ajax_test2_process.php

<html> 
<head> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.js"></script> 
<script type="text/javascript"> 

$(document).ready(function(){ 

    //alert(missingVariable1);   //uncomment -> get error reported (as expected) 

    $.ajax({ 
     url: "ajax_test2_process.php", 
     data: {send: "hello"}, 
     async: false, 
     success: function(data){ 
      $("#results").append(data); 
      alert(missingVariable2);  //no error reported (there should be surely?) 
      $("#results").append(" finished "); 
      } 
     }); 
}); 

</script> 
</head> 
<body> 
<div id="results"></div> 
</body> 
</html> 

ajax_test2.html ....

http://www.alisonstrachan.co.uk/tests/ajax2/ajax_test2.html

을 그래서 당신은 단지 그것을 테스트하기 위해 아래를 클릭 할 수 있습니다 - 나는 또한 웹에 코드를 넣었습니다

<?php 
    echo "received: " . $_REQUEST['send']; 
?> 
+0

이 표시되는 리디렉션 페이지'받은 : hello' 그것은 의도 된 결과 아닙니다 – Rafay

+0

3nigma @ 감사에 대한 이걸 시험해 봐. 예, 이는 의도 한 결과입니다. 하지만 내가 알아야 할 것은 Firefox 오류 콘솔에서 무엇을 얻는가입니다. 고의적 인 'alert()'오류가 콘솔에 기록됩니까? –

+0

어쩌면 아약스 요청이 실패합니다. 따라서 성공이 호출되지 않습니다. 성공으로 바뀌려고 시도합니다. FIREBUG – max4ever

답변

1

내 생각 엔 jQuery wrapping the callback in a try...catch으로 인해 자동으로 작동하지 않는 것 같습니다.

간단히 말해서 콜백 함수에서 발견 된 모든 오류 또는 잘못된 코드는 자동으로 실패하고 (내가 요약 한 try ... catch까지 버블 링됩니다) 다음 거짓 인 곳에서 처리를 중단합니다.

+0

감사. 그건 의미가 있습니다. 그러나 분명히 이것은 디버깅을 악몽으로 만듭니다.또는 디버깅하는 더 좋은 방법이 있습니다. 내가 놓친 게 있니? –

+0

@macrae_dj : 콜백의 맨 아래에'console.log ('ajax complete');를 넣어 콜백이 전체적으로 실행되었는지 확인해도 될까요? 나는 보통 내가 한 모든 일이 수행 (좋은 전화) 또는 행동의 부재 (악의적 인 전화)가없는 것처럼 보이기를 원한다고 생각합니다. –

+0

제 실제 프로젝트에서 나는 성공 콜백에서 엄청난 양의 자바 스크립트를 가지고 있습니다. 디버그 할 수 있어야 할 때 try/catch에서 '뛰어 내리는'방법을 알아 내려고 노력 중입니다. 하지만 아마도'setTimeout (continueSuccessHandler, 1)'또는 무엇인가를 사용하고 있습니다. 더 우아한 것이 있는지 모릅니다. –

0

Ajax functi에 대한 다른 콜백을 살펴보십시오 (http://api.jquery.com/jQuery.ajax/) - errorstatusCode을 살펴볼 수도 있습니다. Firebug는 아약스 관련 문제를 조사하는 데 매우 유용합니다. 게시물 및 응답을 볼 수 있습니다. 아약스 커뮤니케이션.

당신이 불을 지르고 콘솔을 사용 console.log('text');

1

이 때문에 애드 블록 플러스 또는 유사한 확장 (설치 한 확장 기능을 확인)에 수도를 기록하려면, bug 653533를 참조하십시오.

+0

Firefox를 안전 모드 (모든 확장 기능을 사용할 수 없음)로 실행하면 동일한 결과가 나타납니다. –

0

당신은 또한 jquery docs 같은 객체에 아약스 포장 시도 할 수는 제안한다 :

var jqxhr = $.ajax({ url: "example.php" }) 
    .success(function() { alert("success"); }) 
    .error(function() { alert("error"); }) 
    .complete(function() { alert("complete"); }); 
관련 문제