간단한 jQuery, PHP 및 JSONP 예제?
PHP간단한 jQuery, PHP 및 JSONP 예제?
나는 같은 출처 정책 문제에 직면 해 있으며 그 주제를 연구함으로써 JSONP를 사용하여 교차 출처 요청을하는 것이 내 프로젝트의 가장 좋은 방법이라는 것을 알았다.
나는 IBM에서 JSONP에 관한이 기사를 읽었지만, 무슨 일이 일어나고 있는지에 대해서는 100 % 명확하지 않다.
내가 여기에서 요구하는 것은 단순한 jQuery> PHP JSONP 요청 (또는 용어가 무엇이든지간에) 일 것이다.) - 이와 비슷한 것 (분명히 부정확하다, 그것만으로도 내가 성취하고자하는 것에 대한 아이디어를 얻을 수있다. :)) :
jQuery :
$.post('http://MySite.com/MyHandler.php',{firstname:'Jeff'},function(res){
alert('Your name is '+res);
});
PHP :
<?php
$fname = $_POST['firstname'];
if($fname=='Jeff')
{
echo 'Jeff Hansen';
}
?>
이것을 JSONP 요청으로 변환하는 방법은 무엇입니까? 반환 할 결과에 HTML을 저장하는 경우에도 그렇게할까요?
해결법
-
==============================
1.외부 도메인에서 $ .getJSON을 사용하면 JSONP 요청 (예 : my tweet slider)이 자동으로 실행됩니다.
외부 도메인에서 $ .getJSON을 사용하면 JSONP 요청 (예 : my tweet slider)이 자동으로 실행됩니다.
소스 코드를 살펴보면 .getJSON을 사용하여 Twitter API를 호출한다는 것을 알 수 있습니다.
그래서 당신의 예가 될 것입니다 : 이것은 시험되고 작동합니다 (실제로 작동하는지 보려면 http://smallcoders.com/javascriptdevenvironment.html을 방문하십시오)
//JAVASCRIPT $.getJSON('http://www.write-about-property.com/jsonp.php?callback=?','firstname=Jeff',function(res){ alert('Your name is '+res.fullname); }); //SERVER SIDE <?php $fname = $_GET['firstname']; if($fname=='Jeff') { //header("Content-Type: application/json"); echo $_GET['callback'] . '(' . "{'fullname' : 'Jeff Hansen'}" . ')'; } ?>
콜백 =? + res.fullname
-
==============================
2.우선 JSONP를 사용하여 POST 요청을 할 수 없습니다.
우선 JSONP를 사용하여 POST 요청을 할 수 없습니다.
기본적으로 일어나는 일은 동적으로 스크립트 태그를 삽입하여 데이터를로드하는 것입니다. 따라서 GET 요청 만 가능합니다.
또한 데이터를 변수에로드하기 위해 요청이 완료된 후에 호출되는 콜백 함수에 데이터를 래핑해야합니다.
이 모든 과정은 jQuery에 의해 자동화됩니다. 외부 도메인에서 $ .getJSON을 사용하는 것만으로는 효과가 없습니다. 나는 개인적인 경험에서 말할 수있다.
가장 좋은 방법은 & 콜백을 추가하는 것입니다. 당신에게 url.
서버 측에서는이 콜백 함수로 데이터가 래핑되었는지 확인해야합니다.
즉.
echo $_GET['callback'] . '(' . $data . ')';
편집하다:
리암 (Liam)의 대답에 대해 논평 할만큼 충분한 담당자가 없으므로 여기서의 해결책을 제시하십시오.
Liam의 라인 바꾸기
echo "{'fullname' : 'Jeff Hansen'}";
와
echo $_GET['callback'] . '(' . "{'fullname' : 'Jeff Hansen'}" . ')';
-
==============================
3.추가 제안
추가 제안
자바 스크립트 :
$.ajax({ url: "http://FullUrl", dataType: 'jsonp', success: function (data) { //Data from the server in the in the variable "data" //In the form of an array } });
PHP 콜백 :
<?php $array = array( '0' => array('fullName' => 'Meni Samet', 'fullAdress' => 'New York, NY'), '1' => array('fullName' => 'Test 2', 'fullAdress' => 'Paris'), ); if(isset ($_GET['callback'])) { header("Content-Type: application/json"); echo $_GET['callback']."(".json_encode($array).")"; } ?>
-
==============================
4.서버가 유효한 JSON 배열로 응답하도록하려면 JSON을 대괄호 ()로 묶고 콜백을 앞에 추가하십시오.
서버가 유효한 JSON 배열로 응답하도록하려면 JSON을 대괄호 ()로 묶고 콜백을 앞에 추가하십시오.
echo $_GET['callback']."([{'fullname' : 'Jeff Hansen'}])";
json_encode ()를 사용하면 기본 PHP 배열을 JSON으로 변환합니다.
$array = array( 'fullname' => 'Jeff Hansen', 'address' => 'somewhere no.3' ); echo $_GET['callback']."(".json_encode($array).")";
-
==============================
5.간단한 jQuery, PHP 및 JSONP 예제는 다음과 같습니다.
간단한 jQuery, PHP 및 JSONP 예제는 다음과 같습니다.
window.onload = function () { $ .ajax ({ cache : false, url : "https://jsonplaceholder.typicode.com/users/2", dataType : 'jsonp', 'GET'을 입력하십시오. 성공 : 기능 (데이터) { console.log ( 'data', data) }, 오류 : 함수 (데이터) { console.log (데이터); } }); };
'PHP' 카테고리의 다른 글
PHP로 큰 숫자로 작업하기 (0) | 2018.09.11 |
---|---|
사용자의 시간대를 감지하는 방법은 무엇입니까? [복제] (0) | 2018.09.11 |
악센트 부호가있는 문자 교체 PHP (0) | 2018.09.11 |
문자열에서 utf8 이외의 문자 제거 (0) | 2018.09.11 |
json_encode가 NULL을 반환하고 있습니까? (0) | 2018.09.11 |