현재 JSONP를 사용하여 데이터를 받으려고합니다. 내가 https://ajax.googleapis.com/ajax/services/search/news?v=1.0&q=barack%20obama&callback=callbackForJsonpApi다트 JSONP 콜백 오류
을 쳤을 때 나는 완벽하게 정상적으로 응답을 얻을 :
callbackForJsonpApi({RESPONSE HERE})
하지만 https://api.forecast.io/forecast/APIKEYHERE/37.8267,-122.423?callback=callbackforJsonApi에 갈 때 내가 얻을 : 나는 "대해서 typeof 것을 왜
typeof callbackforJsonApi === 'function' && callbackforJsonApi({ RESPONSE HERE})
사람이 설명 할 수 "부분은 하나의 응답 앞에 붙이지 만 다른 하나는 응답하지 않습니다.
이 내 일부 HTML입니다void main() {
// listen for the postMessage from the main page
window.onMessage.listen(dataReceived);
ScriptElement script = new Element.tag("script");
script.src = "https://api.forecast.io/forecast/APIKEY/37.8267,-122.423?callback=callbackforJsonApi";
document.body.children.add(script);
}
dataReceived(MessageEvent dataReceived) {
var data = JSON.parse(dataReceived.data);
print(data['responseData']);
}
:
이
내 site.dart 파일입니다<html>
<body>
<script type="text/javascript">
function callbackForJsonpApi(s) {
var data = JSON.stringify(s);
window.postMessage(data, '*');
}
</body>
</html>
다른 서버에서 다른 응답을받는 것 같습니다. 다르게 구성된 서버의 문제가 아닌가요? – lrn
JavaScript 나 Dart와 관련된 문제는 아니지만 단순히 서버에서만 발생합니다. 후자는'callbackforJsonApi' 함수가 정의되지 않았다면 에러를 피하기 위해 콜을 지키고있는 것처럼 보입니다 - 그러면 예외를 던지기 만하면됩니다. 그것은 "비표준"입니다 (JSONP의 표준은 아니지만 전통적이지는 않습니다). JavaScript로 해석되는 경우 안전해야합니다. – lrn
내 마지막에 나는 그들이 어떻게 처리 하는지를 변경하도록 요청할 수 있습니까? – Jonfor