2012-02-07 2 views
0

을 무시하는 중입니다 jQuery.ajaxSetup은() 나는이 문제를 가지고 JS 파일에서

$.ajaxSetup({ 
    type: 'POST', 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    data: {}, 
    error: function (jqXHR, textStatus, errorThrown) { 
     debugger; 
    } 
}); 

그런 다음 더에있는 파일에 좀 값을 작성하기 위해 그것의 생성자에 AJAX 호출을 가진 개체를 인스턴스화합니다.

function RequestViewModel() { 
    var self = this; 
    (...) 
    // Initalization Methods 
    $.ajax({ 
     url:ajaxAddress + 'LoadStates', 
     success: function (data) { 
      debugger; 
     } 
    }); 
} 
var model = new RequestViewModel(); 

그러나 코드에서 ajax 호출을하면 JSON 대신 'xml'이 dataType으로 사용됩니다. 이로 인해 내 웹 서비스 호출이 중단되고 AJAX 호출의 오류 콜백으로 전송됩니다. 실제 Ajax 호출 내에서 설정을 이동하면 호출이 작동하고 서버에서 데이터가 반환됩니다. 어떤 이유로 글로벌 환경이 존중되지 않습니다.

내 질문에 왜 이것이 작동하지 않습니까? 나는이 문제없이이 같은 기술을 여러 번 사용했다.

jQuery 버전 1.7.1을 사용하고 있습니다. 문제가 jQuery를 파일의 라인 7517에 같은

UPDATE는

보인다. 거짓으로 eva되고있는 IF 문을 수행하고 요청 헤더에 올바른 내용 유형을 설정하는 것을 건너 뜁니다.

+0

'$ .ajaxSetup()'호출이 실행되고 있습니까? –

+0

파일에서 첫 번째 호출입니다. .ready() 내부에 있어야하는 경우가 아니면. – arb

+0

필수는 아니지만 모든 JS는 실제로 .ready() 안에 있어야합니다. – KOGI

답변

2
  • 보십시오. (NOT 가능성이 있지만 원인)
  • 대신 글로벌 이벤트 핸들러가 ajaxSetup 될하지 않는 것이 좋습니다 $.ajaxSetup
  • jQuery.ajaxSetup를 사용해보십시오. $.ajaxError( 대신에 error: 이동 :

    jQuery.ajaxError(function (e, jqxhr, settings, exception) { alert(settings.url + " Failed");
    });

예 당신은 로그 클래스 (와 사업부가 어떤 오류가 발생하는 경우에 일부 텍스트를두고있는 경우 :

$("div.log").ajaxError(function() { 
    $(this).text("Triggered ajaxError handler."); 
}); 

참고 : 리팩토링 할 때 마지막 쉼표를 제거하십시오.

또한 최신 버전의 jQuery (현재 1.7.1)를 사용하고 있다면 간단하게 할 수 있습니다. :

contentType: "application/json; charset=utf-8", 

편집

contentType: "application/json", 

에 : 빠른, 더러운 글로벌 핸들러 :

$(document).ajaxError(function(e, xhr, settings, exception) { 
    alert('error in: ' + settings.url + ' \\n'+'error:\\n' + exception); 
}); 

가 EDIT2 : 일부 자원도로 전송 빈 데이터 세트를 넣어 : (금리)

data: "{}", 
+1

네, 그게'data : "{}"였습니다. 이전 프로젝트에서 사용한 jQuery의 이전 버전에서이 영역을 살펴 보았습니다. 그리고 그 영역에서 로직을 변경 한 것처럼 보이기 때문에 빈 객체를 사용하는 것이 더 이상 효과가없는 것 같습니다. – arb

0

.ajaxSetup()이 (가) 호출되는 위치는 무엇입니까? 다른 플러그인을 사용하고 있습니까? 다른 라이브러리가 잘못하여 옵션을 덮어 쓸 수도 있습니다. 문서 준비 래퍼 내부에 .ajaxSetup 퍼팅

+0

Knockout.js 플러그인도 사용하고 있지만 영향은 없다고 생각합니다. – arb

+0

녹아웃이 문제를 일으키지 않는지 확인할 수 있습니다. 테스트를 위해 사이트에서 제거했습니다. – arb

+0

그럼 이미 언급 한 .ready() 래퍼와 관련이 있다고 생각합니다. – KOGI

관련 문제