2011-08-24 2 views
3

그래서 여기 내 기능

function ajax(addr,loading, loadTo, json){ 
     addr = addr.replace(' ', ''); 
     if (loading){ 
       $("#"+loading).fadeIn(); 
     } 

     if (json){ 
       $.getJSON(addr, function(data){ 
         alert('whoooo working'); // <--- it never goes here 
         if (loading){ 
           $("#"+loading).fadeOut(); 
         } 
         procJSON(data); 
       }); 
       return true; 
     } 
} 

내가 (이미지를 전송

var postid = $(this).attr('data-postid'); 
ajax(url+'tools/delete/'+postid, 'loading'+postid, false, true); 

아약스와 함께 전화 드렸습니다 이미지로드 중)이 표시되지만 콜백 함수는 호출되지 않습니다.

그 IE의 큰 목록에서 새롭게 예약 된 값이 아닌가? 예, IE는 유효한 브라우저가 아니지만 고객을 탓할 수는 없습니다.

+0

응답이 어떤 콘텐츠 유형이 있는가에게 : 당신이 $.ajax 방법을 사용하는 경우

, 당신은 또한 당신에게 무슨 일이 일어나고 있는지에 대한 단서를 줄 것이라고 오류 메시지를 잡을 수 있습니까? 'application/json', FWIW 여야합니다. * (또한, 이것은 내장 된 디버거를 통해 단계별로 쉽게 할 수 있습니다 - 어떤 단서를 줍니까?) * – Tomalak

+0

잘 모르겠지만 그것을 하드 코어에 넣는 것이 좋습니다 – genesis

+0

@Tomalak : 제 질문에 대답 해주십시오. 당신은 100 % 맞습니다. 젠장, 나는 IE가 매우 예외적 인 이유를 모르겠다. – genesis

답변

6

특정 브라우저에서 실패하기 때문에 예상치 못한 헤더가 응답에 포함되어 브라우저에서 데이터를 기반으로합니다.

예를 들어 응답이 대신 application/json의 콘텐츠 형식 text/html이있는 경우, 브라우저가 다음 JSON 구문 분석이 실패 할 것, (주위 pre 태그를 추가하여)을 HTML 문서로 응답 콘텐츠를 설정하려고 할 수도 있습니다.

$.ajax({ 
    url: addr, 
    dataType: 'json', 
    success: function(data){ 
    alert('whoooo working'); // <--- it never goes here 
    if (loading){ 
     $("#"+loading).fadeOut(); 
    } 
    procJSON(data); 
    }, 
    error: function(o,c,m) { alert(m); } 
}); 
+0

+1 또는 디버깅 도구에서 네트워크 활동을 볼 수 있습니다. – Tomalak