2014-10-24 2 views
0

탐색 탭 컨텐트 상자에 도메인 간 웹 페이지를 표시해야합니다. 나는 "어떤 기원"예를 사용하고는이 링크탐색 탭 컨텐트 상자에 교차 도메인 HTML 컨텐트 표시

Loading cross domain endpoint with jQuery AJAX

설명 내 HTML 코드는 다음과 같습니다

<section class="local-market-stats"> 
    <div id="market-condition-chart-wrap"> 
     <ul class="nav nav-tabs" id="myTabs"> 
      <li class="active"><a data-toggle="tab" href="#cc">CC</a></li> 
      <li><a data-toggle="tab" href="#fm">FM</a></li> 
      <li><a data-toggle="tab" href="#et">ET</a></li> 
      <li><a data-toggle="tab" href="#bs">BS</a></li> 
     </ul> 
      <div class="tab-content"> 
      <div class="tab-pane active" id="cc"> 
       <div></div> <!-- the external page content displays here --> 
      </div> 

      <div class="tab-pane" id="fm"> 
      </div> 

      <div class="tab-pane" id="et"> 
      </div> 

      <div class="tab-pane" id="bs"> 
      </div> 
      </div><!-- end tab-content --> 
    </div><!-- end market-condition-chart-wrap --> 
    </section><!-- end local-market-stats -->   

아약스 코드 :

$.ajaxSetup({ 
     datatype : "html", 
     contentType: "application/x-www-form-urlencoded; charset=UTF-8" 
}); 

$.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://www.marketrendspremium.com/share/v1/e/cmlkPTEmZnRpZD0yJmZpZD0xMDAwJmd0eT0xMiZsdGlkPTQmbGlkPTk5OTk5JmdpZD0wJmNjPTAwMDBkZCZzaWQ9MCZtaWQ9MCZ0dD0yJm1vZGU9MiZ3aWR0aD01NDAmaGVpZ2h0PTMzMCZtbHNpZD0wJmN0eT1tbHM=') 
     + '&callback=?', 

     function(data) { 
      $('#cc div').html(data.contents); 
}); 

아무 것도 표시되지되었다 결과적으로 encodeURIComponent ('http://google.com')로 다시 전환하면 정상적으로 작동합니다. 링크를 표시 할 때 url을 인코딩 할 필요는 없지만 encodeURIComponent()를 제거하더라도 여전히 작동하지 않습니다.

모든 조언을 크게 듣습니다!

+0

ajaxSetup의 contentType을'application/json; charset = utf-8'. 그리고 ajaxSetup의 데이터 유형은 필요하지 않습니다. – vitalikaz

+0

도움 주셔서 감사합니다. 음, 웹 페이지의 내용은 차트입니다. 응용 프로그램/json으로 변경 한 후 차트가 표시되지 않고 "차트가 여기에 표시됩니다"라는 메시지 만 표시됩니다. – user1672793

+0

이제 또 다른 문제가 있습니다. 페이지의 전체 HTML을 가져 와서 div에 삽입하면됩니다. 이것은 귀하의 유스 케이스에 대해 올바르지 않습니다. 왜 그런게 필요한거야? 나는 당신이 필요로하는 데이터 (전체 페이지의 HTML이 아닌, 단지 데이터)를 얻을 수 있어야하고, 페이지에서 로컬로 차트를 시작할 수 있어야한다고 생각한다. – vitalikaz

답변

0

나는 제대로 작동 할 수있게되었지만 실제로 찾고있는 것인지 확실하지 않습니다. 노트의 첫 번째 몇 :

은 "차트 간다"라는 메시지가 도착
  • - 귀하의 요청 테스트 중에 내 경우에는
  • 을 일하는 의미 marketrendspremium.com에 의해 반환 된 웹 페이지의 몸이었다, 그 메시지를 받았을 때 Highcharts가 정의되어 있지 않다는 자바 스크립트 오류가 발생했습니다.
  • 기본적으로 marketrendspremium.com은 차트를 작성하는 자바 스크립트가있는 거의 빈 HTML 본문을 반환했으며 Highcharts가 정의되지 않았기 때문에 javascript가 작동하지 않았습니다.

그렇기 때문에 나는 marketrendspremium.com을 제어 할 수 없어서 자바 스크립트 오류로 고칠 수 없었습니다. 그래서 나는 그들의 반응을 검토, 그들은 자바 스크립트 라이브러리 자신을 포함하고 있습니다 :이 라이브러리는 Highcharts을 정의하는 추측을했다, 나는 내 자신의 페이지에 해당 라이브러리를 포함 할 경우,이 문제를 해결할 수 있음을

<script type="text/javascript" src="http://209.20.80.108/chart/js/highcharts.js"></script> 

을 , 그리고 그것을했다. JSON을 사용하지 않았지만 corsproxy.com을 사용했습니다. 여기에 소스 코드가 있습니다 :

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script type="text/javascript" src="http://209.20.80.108/chart/js/highcharts.js"></script> 
<script type="text/javascript"> 
    // this variable isn't necessary but it made the code easier to read 
    var url = 'www.marketrendspremium.com/share/v1/e/cmlkPTEmZnRpZD0yJmZpZD0xMDAwJmd0eT0xMiZsdGlkPTQmbGlkPTk5OTk5JmdpZD0wJmNjPTAwMDBkZCZzaWQ9MCZtaWQ9MCZ0dD0yJm1vZGU9MiZ3aWR0aD01NDAmaGVpZ2h0PTMzMCZtbHNpZD0wJmN0eT1tbHM='; 
    $.get('http://www.corsproxy.com/' + url, 
     function(data) { 
      $('#cc div').html(data); 
     } 
    ); 
</script> 
<section class="local-market-stats"> 
    <div id="market-condition-chart-wrap"> 
     <ul class="nav nav-tabs" id="myTabs"> 
      <li class="active"><a data-toggle="tab" href="#cc">CC</a></li> 
      <li><a data-toggle="tab" href="#fm">FM</a></li> 
      <li><a data-toggle="tab" href="#et">ET</a></li> 
      <li><a data-toggle="tab" href="#bs">BS</a></li> 
     </ul> 
     <div class="tab-content"> 
      <div class="tab-pane active" id="cc"> 
       <div></div> <!-- the external page content displays here --> 
      </div> 
      <div class="tab-pane" id="fm"></div> 
      <div class="tab-pane" id="et"></div> 
      <div class="tab-pane" id="bs"></div> 
     </div><!-- end tab-content --> 
    </div><!-- end market-condition-chart-wrap --> 
</section><!-- end local-market-stats --> 
+0

이것은 절대적으로 작동합니다. 그 솔루션을 시도하고 동일한 문제가 있었지만 차트 스크립트를 삽입하는 것에 대해 생각하지 않았다. 정말 고맙습니다! – user1672793

+0

문제 없으니 다행입니다. 염두에 두어야 할 점은 highcharts.js 스크립트의 위치를 ​​모니터링하고 이동 될 때마다 소스 코드를 변경해야한다는 것입니다. 일반적으로 그것은 그것이 5 년 동안 동일하게 유지된다는 것을 의미합니다, 당신은 그것에 대해 모두 잊어 버릴 것입니다, 그러면 그들은 그것을 움직일 것이고 당신은이 모든 것을 기억하는 시간을 보낼 것입니다! –

+1

와우, 팁을 주셔서 고마워. 네가 나를 상기시키지 않으면 내가해야할 일을 묘사 할 수 없다. 훌륭한 팁! – user1672793

관련 문제