2012-01-13 2 views
3

저는 jquery/ajax에 비교적 익숙하며 매우 간단한 JSON ajax 호출에서 결과를 파싱하는 데 문제가 있습니다. 여기 내 code입니다. 이 예제에는 두 개의 테스트 URL이 있습니다. 주석 처리 된 URL은 예상대로 작동하지만 주석 처리되지 않은 URL은 아닙니다 (jslint에 따라 둘 다 올바르게 형식이 지정된 JSON입니다). 왜 구문 분석 오류가 발생하는지, 다른 하나는 타사 도메인이 아닌지에 대한 아이디어가 있습니까?jquery Ajax에서 JSON 응답을 구문 분석 할 수 없습니다.

미리 감사드립니다.

function getNews2() { 

$.ajax({ 

    //url: "http://api.ihackernews.com/page?format=jsonp", 
    url: "http://recs.coremetrics.com/iorequest/restapi?cm_cid=90232642&cm_zoneid=Mobile&cm_targetid=FULO-0101", 
    dataType: "jsonp", 
    success: function(data, textStatus, xhr) { 
     alert("SUCCESS recsStatus=" + textStatus); 
     alert(JSON.stringify(data)); 
    }, 
    error: function(data, textStatus, errorThrown) { 
     alert("FAILURE recsStatus=" + textStatus); 
     alert(JSON.stringify(data)); 
    } 
}); 
} 

getNews2(); 

답변

2

두 URL의 응답을 모두 CURL로보고 나면 작동하지 않는 URL은 jsonp 응답이 아닙니다. 그것은 json 응답입니다. json p가 필요로하는 메소드 호출에 랩핑되지 않았습니다. 작동하지 않는

하나는

HNCallback({"nextId":null,...})

이 차이를 볼 대

{"io":{"rec_count":12,...}}

입니까?

동일한 원본 정책으로 인해 두 URL 중 하나에서 순수한 json 응답을받을 수 없습니다. 따라서 CORS (다른 도메인을 제어하는 ​​경우) 또는 jsonp (현재 사용하도록 구성된 것처럼) 또는 서버 측 프록시를 사용해야합니다.

+0

응답 해 주셔서 감사합니다. 실례지만, json (네트워크 요청에서)을 올바른 형식의 jsonp 응답으로 변환하는 방법은 없습니까? 나는 "dataType (json jsonp);"이라고 생각했다. 이 작업을 수행하거나 dataFilter 옵션을 사용할 수 있습니까? – thehagbag

+0

번. 동일한 원본 정책으로 인해 json 데이터를 얻을 수도 없습니다. – hvgotcodes

+0

결과가 도메인 간 요청에 대한 JSONP가 아닌 경우 불가능합니다 ... 도움을 주셔서 감사합니다. – thehagbag

관련 문제