2012-04-28 3 views
2

jquery.ajax를 사용하여 http://developer.pintlabs.com/brewerydb/api-documentation을 쿼리하려고합니다.JSON 형식의 Jquery.ajax API 요청으로 인해 Chrome에서 "Uncaught SyntaxError : Unexpected token :"이 발생합니다.

$.ajax({ 
      url:"http://api.playground.brewerydb.com/beer/" + "O3tmVI" + "?key=A1029384756B&format=json", 
      dataType: "jsonp", 
      jsonpCallback: "callbackfunctie", 
      success:function(oData){ 
        var returnData = oData; 
        console.log(returnData);  
      } 
    });    

그리고 :

Uncaught SyntaxError: Unexpected token :

:

$.getJSON("http://api.playground.brewerydb.com/beer/" + "O3tmVI" + "?key=A1029384756B&format=json&jsoncallback=?", 
       function(data){ 
        console.log(data); 
       }); 

모두이 오류를 일으킬

는이 내가 시도 JQuery와 요청이 ("O3tmVI은"더미 ID가 있습니다)입니다

반환 된 json 객체는 다음과 같습니다.

{"message":"Request Successful","data":{"id":"O3tmVI","name":"The Public","description":"The Public\u2122 is a delicious easy drinking pale ale made from a simple recipe of quality grain and top notch American hops. Tawny hues of caramel and amber are a trademark of the Public ale as well as a delicious spruce crispness resulting from a beautiful abundance of hops! This beer will be produced throughout the year and serves as the foundation of our product line.","abv":"6","glasswareId":8,"availableId":1,"styleId":33,"isOrganic":"N","labels":{"icon":"http:\/\/s3.amazonaws.com\/brewerydbapi\/beer\/O3tmVI\/upload_3sdJcU-icon.png","medium":"http:\/\/s3.amazonaws.com\/brewerydbapi\/beer\/O3tmVI\/upload_3sdJcU-medium.png","large":"http:\/\/s3.amazonaws.com\/brewerydbapi\/beer\/O3tmVI\/upload_3sdJcU-large.png"},"status":"verified","statusDisplay":"Verified","servingTemperature":"cool","servingTemperatureDisplay":"Cool - (8-12C\/45-54F)","createDate":"2012-04-05 04:02:36","updateDate":"2012-04-05 04:34:17","glass":{"id":8,"name":"Tulip","createDate":"2012-04-05 04:00:04"},"available":{"id":"1","name":"Year Round","description":"Available year round as a staple beer."},"style":{"id":33,"categoryId":10,"category":{"id":10,"name":"American Ale","bjcpCategory":"10","createDate":"2012-04-05 04:00:04"},"bjcpSubcategory":"A","name":"American Pale Ale","simpleUrl":"american-pale-ale","ibuMin":"30","ibuMax":"45","abvMin":"4.5","abvMax":"6.2","srmMin":"5","srmMax":"14","ogMin":"1.045","ogMax":"1.06","fgMin":"1.01","fgMax":"1.015","createDate":"2012-04-05 04:00:04"}},"status":"success"} 

I가 성공적이 유효한 JSON

이제, 문제는 내가 (크로스 도메인)를 요청하기 위해 객체 JSONP 필요하다 검증했다. 따라서 컨테이너 함수로 싸여 야합니다. http://www.jquery4u.com/json/ajaxjquery-getjson-simple/

Uncaught SyntaxError: Unexpected token :(in crome) Invalid Lable(in firefox) “invalid label” error can be fixed by passing the JSON data to the js callback

:

는이 기사 느릅 나무는이 버그에 대한 짧은 항목이 발견 ...이 요청의 매개 변수와 함께 할 수 있어야하지만, 지금까지 내가 거의 아무것도 시도하지만 성공이 없었습니다

하지만 그가 말하는 것을 정말로 이해하지 못합니다.

무엇이 잘못 되었나요?

+0

는 오류가 –

+0

O3tmVI을 던져 정확하게 라인 표시합니다 O3tmVI은 (1 - 라인) JSON 객체를 반환으로, 1 – matthiasdv

+0

당신이 할 경우 데이터 = $ .parseJSON (데이터) ? –

답변

2

내 생각 엔 http://api.playground.brewerydb.com/beer/에있는 서비스가 json을 반환하지만 이 아닌 jsonp입니다. jsonp 태그에서 "예기치 않은 토큰"을 검색하면 one과 같은 많은 설명을 찾을 수 있습니다. json은 자바 스크립트 함수, 즉 콜백에 래핑되어야하지만 jsonp를 지원하는 것은 크로스 도메인 웹 서비스에 달려 있습니다. 이것은 브라우저에 의해 시행되고 jQuery는 그것을 극복 할 수 없다.

+0

예. 서버 실제로 JSONP 및 JSONP 반환합니다. 내가 JSONP를 지원하도록 다른 것을 변경하도록 할 수있는 방법이 없다고 생각됩니다. 지금은 YQL을 사용하여 요청을 수행하고이를 JSONP로 변환하여 나에게 제공합니다. – matthiasdv

+0

결국이 일이 끝났습니까? 나는 그들의 문서에 대한 빠른 스캔을했고 그들이하는 것을 제안하는 것을 찾지 못했습니다. – am17torres

1

API는

no we don't [support JSONP], as you would have to expose your API key. Best thing to do is setup an intermediate proxy on your side.

twitter 참조 설계 JSONP를 지원하지 않습니다.

Open Beer Database에서 JSONP를 지원합니다. 1Uncaught 구문 에러 : 예기치 않은 토큰 : 03tmVI :

관련 문제