programing

단순한 jQuery, PHP 및 JSONP의 예?

css3 2023. 3. 16. 21:41

단순한 jQuery, PHP 및 JSONP의 예?

저는 같은 원산지 정책 문제에 직면해 있으며, 이 문제를 조사함으로써 JSONP를 사용하여 원산지 간 요청을 하는 것이 제 특정 프로젝트의 최선의 방법이라는 것을 알게 되었습니다.

JSONP에 대한 IBM의 기사를 읽고 있지만, 무슨 일이 일어나고 있는지 100% 알 수 없습니다.

여기서 필요한 것은 단순한 jQuery >PHP JSONP 요구(또는 용어가 무엇이든 상관없습니다) - 다음과 같습니다(분명히 틀렸습니다.이것은 단지 제가 달성하려고 하는 것에 대한 아이디어를 얻을있도록 하기 위한 것입니다:).

j쿼리:

$.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을 저장해도 될까요?

$.getJ를 사용하는 경우외부 도메인의 SON은 JSONP 요청을 자동으로 수행합니다(예: 여기트윗 슬라이더).

소스 코드를 보시면 제가 .getJ를 사용하여 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'}" . ')';

      }
?>

callback=? 및 +res를 확인합니다.풀네임

우선 JSONP를 사용하여 POST 요청을 할 수 없습니다.

기본적으로 스크립트 태그를 동적으로 삽입하여 데이터를 로드합니다.따라서 GET 요구만 가능합니다.

또한 데이터를 변수에 로드하기 위해 요청이 완료된 후 호출되는 콜백 함수로 데이터를 래핑해야 합니다.

이 전체 프로세스는 jQuery에 의해 자동화됩니다.$.getJ 사용만다만, 외부 도메인의 SON이 항상 기능하는 것은 아닙니다.나는 개인적인 경험으로 알 수 있다.

&callback=을 추가하는 것이 가장 좋습니까?를 참조해 주세요.

서버 측에서는 데이터가 이 콜백 함수에 포함되어 있는지 확인해야 합니다.

즉,

echo $_GET['callback'] . '(' . $data . ')';

편집:

Liam의 답변에 대해 코멘트를 할 만한 충분한 평이 아직 없기 때문에 해결책은 여기에 있습니다.

Liam의 라인을 교체합니다.

 echo "{'fullname' : 'Jeff Hansen'}";

와 함께

 echo $_GET['callback'] . '(' . "{'fullname' : 'Jeff Hansen'}" . ')';

기타 제안

JavaScript:

$.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).")";

}
?>

서버가 유효한 JSONP 어레이로 응답하도록 하려면 , JSON 를 괄호로 둘러싸 주세요.()및 프리펜드callback:

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).")";

단순 jQuery, PHP 및 JSONP의 예를 다음에 나타냅니다.

window.onload = function(){
	$.ajax({
		cache: false,
		url: "https://jsonplaceholder.typicode.com/users/2",
		dataType: 'jsonp',
		type: 'GET',
		success: function(data){
			console.log('data', data)
		},
		error: function(data){
			console.log(data);
		}
	});
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

$.ajax({

        type:     "GET",
        url: '<?php echo Base_url("user/your function");?>',
        data: {name: mail},
        dataType: "jsonp",
        jsonp: 'callback',
        jsonpCallback: 'chekEmailTaken',
        success: function(msg){
    }
});
return true;

컨트롤러 내:

public function ajax_checkjp(){
$checkType = $_GET['name'];
echo $_GET['callback']. '(' . json_encode($result) . ');';  
}

이것을 사용해 주세요.

    $str = rawurldecode($_SERVER['REQUEST_URI']);
    $arr = explode("{",$str);
    $arr1 = explode("}", $arr[1]);
    $jsS = '{'.$arr1[0].'}';
    $data = json_decode($jsS,true);

자..

$data['elemname']을 사용하다

JSON 개체와 함께 jsonp 요청을 보냅니다.

요청 형식:

$.ajax({
    method : 'POST',
    url : 'xxx.com',
    data : JSONDataObj, //Use JSON.stringfy before sending data
    dataType: 'jsonp',
    contentType: 'application/json; charset=utf-8',
    success : function(response){
      console.log(response);
    }
}) 

언급URL : https://stackoverflow.com/questions/6809053/simple-jquery-php-and-jsonp-example