복붙노트

간단한 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. ==============================

    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. ==============================

    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. ==============================

    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. ==============================

    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. ==============================

    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 (데이터); } }); };