0
개발중인 웹 페이지에서 일부 스트림 게이지 정보를 검색하기 위해 JSON 요청을 사용하고 있습니다. IE 호환성을 위해 XDomainRequest를 사용하고 있습니다. XDR은 페이지를 처음로드하는 동안 데이터를 성공적으로 검색하지만 후속 호출 (로드 후 페이지에서 windows.setInterval 사용)은 업데이트 된 정보를 반환하지 않습니다. 브라우저 캐시를 지우면 아무 일도 일어나지 않습니다. 페이지가 새로운 데이터를로드하는 유일한 방법은 실제로 IE를 다시 시작하고 페이지를로드하는 것입니다. 나는 무엇이 없는가 ??IE의 XDomainRequest - 첫 번째 호출에서만 "신선한"데이터
//Now Access & Process the NWS Gage Data
if ($.browser.msie && window.XDomainRequest) {
//Internet Explorer Doesn't support JQuery's getJSON so you must use an alternative method
// Use Microsoft XDR
var xdr = new XDomainRequest();
xdr.open("get", "http://waterservices.usgs.gov/nwis/iv/?format=json&sites=12150800,12167000,12161000,12150400,12138160,12134500,12186000,12155300,12155500¶meterCd=00065");
xdr.onload = function() {
//parse response as JSON
var JSON = $.parseJSON(xdr.responseText);
if (JSON == null || typeof (JSON) == 'undefined')
{
JSON = $.parseJSON(data.firstChild.textContent);
}
array.forEach(JSON.value.timeSeries, function(curGage, i){
curGageID = curGage.sourceInfo.siteCode[0].value;
curGageName = curGage.sourceInfo.siteName;
curGageHeight = curGage.values[0].value[0].value;
curGageObs = curGage.values[0].value[0].dateTime;
//Another Internet Explorer quirk. Date format must be changed due to IE's different interpretation
curGageObs = curGageObs.replace(/\-/g,"/");
curGageObs = curGageObs.replace(/T/g," ");
curGageObs = curGageObs.substring(0,curGageObs.length-10);
var theDate = new Date(curGageObs);
document.getElementById('u' + curGageID + 'Height').innerHTML = curGageHeight + " Feet";
document.getElementById('u' + curGageID + 'Date').innerHTML = theDate.toString('M/d/yyyy @ h:mm tt');
assignNwsStageColor(curGageID, curGageHeight);
});
};
xdr.send();
} else {
$.getJSON("http://waterservices.usgs.gov/nwis/iv/?format=json&sites=12150800,12167000,12161000,12150400,12138160,12134500,12186000,12155300,12155500¶meterCd=00065", function(data) {
array.forEach(data.value.timeSeries, function(curGage, i){
curGageID = curGage.sourceInfo.siteCode[0].value;
curGageName = curGage.sourceInfo.siteName;
curGageHeight = curGage.values[0].value[0].value;
curGageObs = curGage.values[0].value[0].dateTime;
var theDate = new Date(curGageObs);
document.getElementById('u' + curGageID + 'Height').innerHTML = curGageHeight + " Feet";
document.getElementById('u' + curGageID + 'Date').innerHTML = theDate.toString('M/d/yyyy @ h:mm tt');
assignNwsStageColor(curGageID, curGageHeight);
});
});
}
감사 :
여기 내 XDR 코드입니다! Steve
, 그것은 XDR 요청이 "알 수없는 키워드"오류없이 반환 데이터를 반환합니다. Chrome과 Firefox (JQuery JSON 요청 옵션 사용)에서는 문제가되지 않습니다. – Scole
좋습니다. 이것은 웹 서비스의 문제입니다. 일반적으로 타임 스탬프는 문제가되어서는 안됩니다. 내가 너를 도울 수 없다니 유감이다. 아마 유일한 해결책은 실제 웹 서비스에 요청을 전달하는 프록시 서비스를 만드는 것입니다. 프록시 서비스에 대한 요청에서 timestamp 매개 변수를 전달할 수 있습니다. 또한 도메인 간 아약스 요청을 더 이상 사용할 필요가 없기 때문에 IE에 대한 해결 방법을 사용할 필요가 없습니다. – PSanetra
나는 몇 가지 후속 작업을 수행하여 정확한 원래 답변을 표시했습니다. USGS 서버가 제안한 추가 기능 매개 변수를 허용하지 않지만 시작 시간에 유효한 매개 변수가 있습니다. Epoch에서 현재 날짜/시간을 가져 와서 3 시간을 빼고 시작 날짜/시간으로 전달했습니다. 이제 내 URL은 항상 고유하므로 IE에서 캐시되지 않은 정보를 반환합니다. 다시 한 번 감사드립니다! – Scole