2010-07-08 2 views
0

그래서 응답이 JSON 형식이 아닌 도메인 간 요청을해야하므로 .getJSON을 사용할 수 없습니다. 크로스 도메인 요청이기 때문에 분명히 작동하지 않습니다.YQL을 사용하여 JQuery와의 도메인 간 요청

나는이 (Read this) 내가 인터넷 검색했을 때 그것은 jsonery 플러그인을 사용하여 포맷 된 json되지 않은 크로스 도메인 호출을 할 원하는 일을합니다 (보인다) 보인다. 내 코드는 다음과 같습니다. 내 브라우저에 붙여 넣으면, 내가 last.fm 문서

서버 응답 의 몸이 \ n의 시리즈로 구성되어

(ASCII에 따라 응답을 볼 수 있기 때문에 URL이 잘 작동 알고 10) 종료 된 행.

OK 
17E61E13454CDD8B68E8D7DEEEDF6170 
http://post.audioscrobbler.com:80/np_1.2 
http://post2.audioscrobbler.com:80/protocol_1.2 

그래서 내 URL이 잘 알고 : 전형적인 성공 서버 응답 이런 일이 될 것입니다. 이제이 정보를 어떻게 얻고, 왜 내 버전의 예제가 작동하지 않는지 궁금합니다.

function performHandshake(sk, token, ts){ 

    var token = md5(apiSecret + ts); 
    var urlToUse = "http://post.audioscrobbler.com/?hs=true&p=1.2.1&c=tst&v=1.0&u=chamals&t=" + ts + "&a=" + token + "&api_key=" + apiKey + "&sk=" + sk + "&format=xml&callback=cbfunc"; 
      $('#container').load(urlToUse); 
    $.ajax({ 
     url: urlToUse, 
     type: 'GET', 
     success: function(res){ 
      var headline = $(res.responseText).find('a.tst').text(); 
      window.console.log(headline); 
     } 
    }); 

} 

답변

1

YQL과 jQuery를 사용하여 링크 한 페이지에 대해 이야기합니다. 매우 흥미로운 해결책입니다. 그러나, 당신의 예제는 YQL 파트를 건너 뛰는 것 같습니다 (이것은 결정적입니다). 그런 다음

var urlToUse = "http://post.audioscrobbler.com/?hs=true&p=1.2.1&c=tst&v=1.0&u=chamals&t=" + ts + "&a=" + token + "&api_key=" + apiKey + "&sk=" + sk + "&format=xml&callback=cbfunc"; 

var yqlUrl2Use = "http://query.yahooapis.com/v1/public/yql?"+ 
      "q=select%20*%20from%20html%20where%20url%3D%22"+ 
      encodeURIComponent(urlToUse)+ 
      "%22&format=xml'&callback=?" 
    // this function gets the data from the successful 
    // JSON-P call 

당신이 전화 발신 JSONP의 REQ으로 새로운 URL 호출해야합니다 ...

내 나는 부서졌다에 대해 얘기했다 페이지에 링크,하지만 지금은 죄송하다
$.getJSON(yqlUrl2Use, function(json){ 
    // figure out the format of the answer here... 
}); 
+0

+1은 "중요한" – Anurag

1

그래, 크로스 브라우저 스크립팅. 동일한 도메인 정책을 위반하기 때문에 AJAX와 같은 것을 수행 할 수 없습니다.

자바 스크립트가 실행되는 서버와 동일한 서버에 프록시를 설정해야합니다.

편집 모양이 비슷하면 작동하려면 $('#container').load(url) 비트가 필요합니다.

링크 된 기사를주의 깊게 다시 읽으십시오.

+0

고정 http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/ – Crothers

+0

이것은 잘못된 바이런입니다. 당신은 ajax 요청을 cross-domain으로 수행 할 수 있지만'$ .getJSON() '으로 만 가능합니다. – HurnsMobile

+0

@HurnsMobile, 좀 더 명확하게 대답을 업데이트했습니다. '$ .json'은 실제로'