웹 서비스에서 XML을 반환하기 위해 jQuery $ .ajax 호출을 사용하려고합니다. 어떤 이유로 든이 웹 서비스에 대한 호출이 실패하면 사용할 정적 XML이 있습니다. 호출이 실패했는지 여부를 알기 위해 timeout 속성을 사용하려고 노력 중이며 xml 구문 분석 논리를 오류 함수에 넣으려고합니다. 나는 ajax 호출을 제거한 상태에서 테스트했기 때문에 xml 구문 분석이 제대로 작동한다는 것을 알고있다. 실수로 ajax 호출을 추가하여 오류를 발생 시키면 $ xml var는 결코 설정되지 않습니다. 이견있는 사람?정적 폴백 값을 사용하여 webservice에서 XML 가져 오기
var navXml = '<?xml version="1.0" encoding="utf-8" ?><book><chapter id="1"></book>'; //static xml here
var serviceUrl = 'http://1234lkjasdf/test'; //bad service url to test failure
var $xml;
$.ajax({
type: 'GET',
dataType: 'xml',
url: serviceUrl,
timeout: 10,
success: function(data, status){
//set $xml var to xml data returned
$xml = data;
},
error: function (req, status, error){
//set $xml var to xml parsed from static value
xmlDoc = $.parseXML(navXml),
$xml = $(xmlDoc);
}
});
문제가 발생했습니다. $ xml 변수를 설정하기 위해 시간 초과를 기다리는 동안 내 ajax 호출이 비동기 적으로 수행되고 나머지 코드는 실행 중입니다. 나머지 코드는 $ xml 변수가 여전히 null 인 동안 실행되었습니다. 방금 내 ajax 호출에 async 속성을 추가하고이를 수정하기 위해 false로 설정했습니다. 좀 더 연구를 해보았지만 Ajax의 비동기 특성을 모범 사례로 삼지 않고 $ .wait() 메서드를 사용해야하는 것처럼 보입니다. – str8killinit