2013-01-24 3 views
1

나는 최신 브라우저 외국 URL로 AJAX 요청을 허용하지 않는 것이 알고 있어요, 해결 방법은 JSON 인코딩 내가 같이 그 일을 해요 :외부 URL AJAX와 JSON PHP 측

function findZipCodesInRadius(userZip, radiusInMiles) { 

    $.getJSON("http://mydomain.com/php/zipCodesInRadius.php?callback=?", { 
     TheUserZip: userZip, 
     TheRadiusInMiles: radiusInMiles 
    }, 

    function (data) { 
     alert("Data Loaded: " + data); 
    }); 


} 

사물의 PHP 측에서 나는 다음과 같은 결과를 다시 "메아리"가 있습니다

$JSONData = array("callback"=>"true"); 
echo json_encode($JSONData); 

구글 둘러보고 후, 위의 코드는 내가 발견 한 그것은 여전히 ​​작동하지 않는 것입니다. 콜백을 올바르게 에코하려면 어떻게해야합니까? 어쩌면 내가 잘못 아약스 요청을하고있어? 나는 보통 다른 방식으로하지만, 내 다른 웹 사이트의 파일에 액세스하려고하기 때문에 요청을 보내는 적절한 방법을 사방에서 찾고 있었고 이것이 내가 생각해 낸 것입니다. 내가 뭘 잘못하고 있는지 모르겠다.

+1

중복? http://stackoverflow.com/questions/6809053/simple-jquery-php-and-jsonp-example – sascha

+0

나는 여기에 그와 비슷한 것을 찾고있었습니다. 감사합니다 – Silas

답변

2

이 기능을 사용하려면 콜백 기능을 구현해야합니다. $_GET['callback']에 정의 된 콜백 함수로 json_encode를 래핑해야합니다. 예 : echo $_GET['callback']."(".json_encode($JSONData).")";. JSONP는 반대로 나는 최신 브라우저 외국 URL로 AJAX 요청을 허용하지 않는 것이 알고 있어요

$JSONData = array("callback"=>"true"); 
$callback = $_GET['callback']; 
echo $callback,'(',json_encode($JSONData),')'; 
+0

감사합니다. 그것은 나를 미치게했다! 완전히 의미가 있습니다. 5 분 안에이 대답을 받아 들일 수 있습니다. – Silas

1

당신은 , 콜백을 추가해야 현대 브라우저에서 허용하는 경우 (CORS 참조)

해결 방법은 없습니다. JSON 인코딩이지만 JSONP은 동적 소스 <script> 요소를 사용하여 외부 소스를로드하는 기술입니다. 이 작업을 위해, 소스가 실행 자바 스크립트를해야합니다의 callback 매개 변수가 활동하기 시작하는 곳이다 :

echo $_GET['callback'] . '(' . json_encode($JSONData) . ')'; 

이 매개 변수는 함수의 이름이됩니다,하지만 당신은 JS에서 그것에 대해 걱정하지 않아도 코드, JQuery.getJSON 당신을 위해 투명하게 처리합니다.

1

,

을 요청

+0

완전히 의미가 있습니다. 시간을내어 이것을 답변 해 주셔서 감사합니다. – Silas