2012-11-26 1 views
0

잘못 아무것도 :JQuery와 아약스 오류 때 나는 아약스 호출을 할 jQuery를 사용하고 http 요청

// omitting the code for the options properties 

    var options = { 
     type: Type, 
     url: Url, 
     data: '{aString:"abc"}', 
     contentType: ContentType, 
     dataType: dataType, 
     //processdata: ProcessData, 
     success: function (msg) { 
      ServiceSucceeded(msg); 
     }, 
     error: ServiceFailed 

    }; 
    function ServiceFailed(result) { 
     alert('Service call failed: ' + result.status + '' + result.statusText); 
    } 

    $.ajax(options).done(function() { 
     alert("success: " + msg); 
    }); 

이 호출 옵션에 정의 된 URL을 호출되는 것을 작동합니다. 끝점은 내가 호스트하는 wcf 서비스이므로 예상대로 호출되었는지 확인했습니다.

나는 피들러로 전화를 모니터링하며, 요청이나 응답에 아무런 문제가 없음을 알았다. http 응답 코드는 200 OK입니다.

하지만 done 함수는 호출되지 않습니다. 대신 ServiceFailed가 실행됩니다. 왜 이런거야? done()이 호출되지 않는 이유는 무엇이며 jquery consi는 왜

답변

3

게시 한 내용을 기반으로 추측 할 수 있습니다.

dataType을 jQuery에 지정하고 있지만 (데이터 유형이 무엇인지 알려주지는 않았습니다.) 결과를 변환한다고 (잠재적으로) 말합니다. 예를 들어, dataType 변수가 "json"이면 jQuery는 결과를 JSON으로 변환하려고 시도합니다. 그것이 "xml"이라면, jQuery는 결과를 XML로 변환하려고 시도 할 것이다.

통화가 발생하는 것을보고 있고 콘텐츠가있는 200 개의 응답이 표시되면 실패한 데이터 변환이라는 메시지가 표시됩니다.

왜 오류가 발생했는지 자세히 알 수 있습니다. error 기능이 서명으로 호출됩니다

function error(jqXHR, textStatus, errorThrown) 

을 ... 당신이 그것을 내부에 중단 점을 넣어 검사 할 수 있도록 textStatus (이 '외설 경우 결과의 모니터링을 기반으로 200을, 그러나해야하는 유용한 정보) 및 errorThrown을 사용하면 무엇이 잘못되었는지 알 수 있습니다.

+1

자네 말이 맞아

"xml": Treat the response as an XML document that can be processed via jQuery. "html": Treat the response as HTML (plain text); included script tags are evaluated. "script": Evaluates the response as JavaScript and evaluates it. "json": Evaluates the response as JSON and sends a JavaScript Object to the success callback. 

체크 아웃, 난 그냥 오류 기능에 더 많은 인수가 있다고 보았다. 두 번째 인수는 나에게 대답을 주었는데, 결과를 json으로 구문 분석하는 중 오류가 발생했습니다. 내 잘못이야. 감사! (stackoverflow가 허락하자마자 응답으로 응답을 표시 할 것입니다. –

0

에 쿼리 문자열을 추가해야 JSONP를 사용해야합니다 ..... jQuery는 응답 데이터를 처리하고이를 성공 콜백 함수 (제공된 경우)의 첫 번째 인수로 전달합니다. $ .ajax에 전달 된 외로운 인수에서 키/값 쌍으로 dataType을 지정할 수 있습니다. 지원되는 유형은 다음과 같습니다이 페이지

http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests