JSON 교차 도메인 정책 문제로 인해 어려움에 처했습니다. 약간의 실험을 거친 후에이 코드를 작동시킬 수 있었지만 정확히 같은 코드 인 것처럼 보이는 두 개의 코드가있는 상황을 발견했습니다. 단 하나만 작동합니다. 이 매개 변수를 고려하지 않고, JSON은 jsonCallBack라는 함수 호출로 패딩 :두 개의 ajax 스크립트의 차이점은 무엇입니까?
내가 접근 오전 JSON이 파일은 간단 JSONP 것으로 보인다 여기
http://www.aph.com/files/partners/aphnonstopproducts/json/aphnonstopproductsjson.json
입니다. 유효한 JSON 인 것으로 보입니다.
여기이 JSON 데이터를 잡기 위해 사용하려고 코드의 첫 번째 세트는 다음과 같습니다
$.getJSON("http://www.aph.com/files/partners/aphnonstopproducts/json/aphnonstopproductsjson.json?callback=jsonCallback", function (data) {
//This will not alert
alert(data.APHNonStopProducts.Carpark[0].Airport.airportcode);
});
나의 이해는 그 데이터를하기 위해 함수 래퍼의 이름으로 callback=?
를 대체 할 수있는 것이 었습니다 익명의 함수에 전달됩니다. 이 코드는 크롬 개발 도구에서 다음과 같은 오류를 보여줍니다
은 XMLHttpRequest http://www.aph.com/files/partners/aphnonstopproducts/json/aphnonstopproductsjson.json?callback=jsonCallback를로드 할 수 없습니다. 오리진 http://fiddle.jshell.net은 에 의해 액세스 제어 허용을 허용하지 않습니다.
이 aphnonstopproductsjson.json?callback=?
로 URL을 떠나 (익명 하나는 아직 아니지만)
내 코드에서 이름이 지정된 함수 현재 다음 데이터가 제대로 검색되고이라고 명명 된 기능이있는 경우 있음을 주목할 필요가 여기에 작동하는 두 번째 코드입니다 :
$.ajax({
url: "http://www.aph.com/files/partners/aphnonstopproducts/json/aphnonstopproductsjson.json?callback=?",
dataType: 'json',
jsonp : "callback",
jsonpCallback: "jsonCallback",
success: function(data) {
//This alert will fire
alert(data.APHNonStopProducts.Carpark[0].Airport.airportcode);
}
});
});
를이 호출에서 필자는 매개 변수 이름은 콜백을해야한다고 지정하고있어, 및 함수 이름은 jsonCallback해야한다. 따라서 본질적으로 첫 번째 코드와 동일하지 않습니까? 그렇다면 첫 번째 코드가 실패하는 이유는 무엇입니까?
여기에 코드의 두 조각을 참조하십시오 http://jsfiddle.net/3EXca/이
모든 브라우저에서 테스트 했습니까? 이 오류는 FireFox에서 발생한다고 생각합니다 –
* 유효하지 않은 JSONP입니다. JSONP는 콜백 이름을 지정할 수 있습니다. –
@bobek, 저는 주로 Chrome에서 테스트하고 있지만 Firefox에서도 오류가 발생합니다. –