2013-02-03 3 views
0

자바 스크립트에서 URL의 내용을 읽고 싶습니다. 내 도메인에 URL이 없으므로 상호 도메인에 액세스 할 수있는 중간 계층이 필요합니다. PHP 함수를 사용하여 URL을 읽고 jquery를 사용하여 결과를 javascript로 반환하려고했지만 작동하지 않았습니다. 여기 자바 스크립트에서 PHP를 사용하여 URL 내용 읽기

내 재판입니다 :

<script> 
     $(document).ready(function() { 
      //httpQuery("http://asmary.dreameg.com/texttable.txt"); 
      getOutput(); 
     }); 

     function getRequest() { 
      var req = false; 
      try { 
       // most browsers 
       req = new XMLHttpRequest(); 
      } catch (e) { 
       // IE 
       try { 
        req = new ActiveXObject("Msxml2.XMLHTTP"); 
       } catch (e) { 
        // try an older version 
        try { 
         req = new ActiveXObject("Microsoft.XMLHTTP"); 
        } catch (e) { 
         return false; 
        } 
       } 
      } 
      return req; 
     } 

     function getOutput() { 
      var ajax = getRequest(); 
      ajax.onreadystatechange = function() { 
       if (ajax.readyState == 4) { 
        document.getElementById('output').innerHTML = ajax.responseText; 
       } 
      }; 
      ajax.open("GET", "phpjs_test.php", true); 
      ajax.send(null); 
     } 

나는 완전히 새로운 해요 : 나는 "phpjs_test.php"

<?php 
function get_data(){ 
    $url='http://asmary.dreameg.com/texttable.txt'; 
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); 
    $content = curl_exec($ch); 
    $content = htmlspecialchars($content); 
    curl_close($ch); 
    $content = nl2br($content); 
    return $content; 
} 
?> 

라는 이름의 PHP 파일을 생성하고이 자바 스크립트 코드

그래서 PHP 함수조차도 맞지 않을지 모르겠다.

+1

"그것은 작동하지 않았다"와 같은 JSON 배열을받을 수 없습니다 진단 매우 유용합니다 . – GordonM

+1

AJAX가 응답 –

+0

을 수신하려면'return'이 아닌'echo'를 사용해야하지만 echo get_data()와 같이 호출 할 수 있습니다. 잘 작동합니다. –

답변

0

XMLHTTPRequest를 만드는 대신 jQuery 아약스 메서드를 사용해야한다. IE 용 코드를 더 추가 할 필요가 없다. 게다가 이미 jQuery 라이브러리를로드하고있다. 또한 PHP 파일에서 Allow-Origin-Access로 헤더를 설정하고 요청한 다른 도메인을 지정하면 AJAX 요청을하고 응답을 얻지 않으면 아무것도 반환하지 않거나 개발자 도구 네트워크 탭에서 응답을받습니다. 403 - Forbidden이 표시됩니다.

Access-Control-Allow-Origin syntax

0

변경 PHP 파일에 :

<?php 
$url='http://asmary.dreameg.com/texttable.txt'; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$content = curl_exec($ch); 
curl_close($ch); 
$content = explode('~',$content); 

foreach($content as $c) 
{ 
    $records[] = explode('|',$c); 
} 
$content = json_encode($records); 
echo $content; 
?> 

자바 스크립트가이

[["1","name1","10","city1"],["2","name2","20","city2"],["3","name3","30","city3"],["4","name4","40","city4"],["5","name5","50","city5"],["6","name6","60","city6"],["7","name7","7","city7"],["8","name8","80","city8"],["9","name9","90","city9"],["10","name10","100","city10"],["11","name11","11","city11"],["12","name12","12","city12"],["13","name13","13","city13"],["14","name14","14","city14"],["15","name15","15","city15"],["16","name16","16","city16"],["17","name17","17","city17"],["18","name18","18","city18"],["19","name19","19","city19"],["20","name20","20","city20"],[""]] 
+0

변경했지만 ajax.responseText는 PHP 코드 –

+0

입니다. 문제를 피하려면 texttable.txt 파일을 ANSI로 인코딩하십시오 (메모장과 같은 일반 텍스트 편집기로 저장하십시오). –

+0

.php 확장자를 사용하여 PHP 파일을 저장해야합니다. –

관련 문제