JS 튜토리얼

제이에스 홈 JS 소개 JS 어디로 JS 출력 JS 문 JS 구문 JS 코멘트 JS 변수 제이에스렛 JS 상수 JS 연산자 JS 산술 JS 할당 JS 데이터 유형 JS 함수 JS 객체 JS 이벤트 JS 문자열 JS 문자열 메서드 JS 문자열 검색 JS 문자열 템플릿 JS 번호 JS 숫자 메서드 JS 배열 JS 배열 메서드 JS 배열 정렬 JS 배열 반복 JS 배열 상수 JS 날짜 JS 날짜 형식 JS 날짜 가져오기 메서드 JS 날짜 설정 방법 JS 수학 JS 랜덤 JS 부울 JS 비교 JS 조건 JS 스위치 JS 루프 In에 대한 JS 루프 의 JS 루프 JS 루프 동안 JS 브레이크 JS 이터러블 JS 세트 JS 맵 JS 유형 JS 유형 변환 JS 비트와이즈 JS 정규 표현식 JS 오류 JS 범위 JS 호이스팅 JS 엄격 모드 JS 이 키워드 JS 화살표 함수 JS 클래스 JS JSON JS 디버깅 JS 스타일 가이드 JS 모범 사례 JS 실수 JS 성능 JS 예약어

JS 버전

JS 버전 JS 2009(ES5) JS 2015(ES6) JS 2016 JS 2017 JS 2018 JS IE / 엣지 JS 연혁

JS 객체

객체 정의 개체 속성 개체 메서드 개체 표시 개체 접근자 객체 생성자 개체 프로토타입 객체 반복 가능 객체 세트 객체 맵 개체 참조

JS 함수

기능 정의 기능 매개변수 함수 호출 함수 호출 기능 적용 함수 클로저

JS 클래스

수업 소개 클래스 상속 클래스 정적

JS 비동기

JS 콜백 JS 비동기 JS 약속 JS 비동기/대기

JS HTML DOM

DOM 소개 DOM 메서드 DOM 문서 DOM 요소 DOM HTML DOM 양식 DOM CSS DOM 애니메이션 DOM 이벤트 DOM 이벤트 리스너 DOM 탐색 DOM 노드 DOM 컬렉션 DOM 노드 목록

JS 브라우저 BOM

JS 창 JS 화면 JS 위치 JS 연혁 JS 네비게이터 JS 팝업 경고 JS 타이밍 JS 쿠키

JS 웹 API

웹 API 소개 웹 양식 API 웹 기록 API 웹 스토리지 API 웹 작업자 API 웹 가져오기 API 웹 지리적 위치 API

JS 아약스

AJAX 소개 AJAX XMLHttp AJAX 요청 AJAX 응답 AJAX XML 파일 AJAX PHP AJAX ASP AJAX 데이터베이스 AJAX 애플리케이션 AJAX 예제

JS JSON

JSON 소개 JSON 구문 JSON 대 XML JSON 데이터 유형 JSON 구문 분석 JSON 문자열화 JSON 객체 JSON 배열 JSON 서버 JSON PHP JSON HTML JSON JSONP

JS 대 jQuery

jQuery 선택기 제이쿼리 HTML 제이쿼리 CSS 제이쿼리 DOM

JS 그래픽

JS 그래픽 JS 캔버스 JS 플로틀리 JS 차트.js JS 구글 차트 JS D3.js

JS 예제

JS 예제 JS HTML DOM JS HTML 입력 JS HTML 객체 JS HTML 이벤트 JS 브라우저 JS 편집기 JS 연습 JS 퀴즈 JS 인증서

JS 참조

자바스크립트 객체 HTML DOM 객체


JSONP


JSONP는 도메인 간 문제를 걱정하지 않고 JSON 데이터를 보내는 방법입니다.

XMLHttpRequestJSONP는 객체 를 사용하지 않습니다 .

JSONP는 <script>대신 태그를 사용합니다.


JSONP 소개

JSONP는 패딩이 있는 JSON을 나타냅니다.

다른 도메인에서 파일을 요청하면 도메인 간 정책으로 인해 문제가 발생할 수 있습니다.

다른 도메인에서 외부 스크립트 를 요청하면 이 문제가 발생하지 않습니다.

XMLHttpRequestJSONP는 이러한 이점을 이용하여 객체 대신 스크립트 태그를 사용하여 파일을 요청합니다 .

<script src="demo_jsonp.php">

서버 파일

서버의 파일은 함수 호출 내부에서 결과를 래핑합니다.

예시

<?php
$myJSON = '{ "name":"John", "age":30, "city":"New York" }';

echo "myFunc(".$myJSON.");";
?>

결과는 JSON 데이터를 매개변수로 사용하여 "myFunc"라는 함수에 대한 호출을 반환합니다.

함수가 클라이언트에 있는지 확인하십시오.

자바스크립트 함수

"myFunc"라는 함수는 클라이언트에 있으며 JSON 데이터를 처리할 준비가 되어 있습니다.

예시

function myFunc(myObj) {
  document.getElementById("demo").innerHTML = myObj.name;
}


동적 스크립트 태그 생성

위의 예는 스크립트 태그를 넣은 위치에 따라 페이지가 로드될 때 "myFunc" 함수를 실행하지만 그다지 만족스럽지 않습니다.

스크립트 태그는 필요할 때만 생성해야 합니다.

예시

버튼을 클릭할 때 <script> 태그를 만들고 삽입합니다.

function clickButton() {
  let s = document.createElement("script");
  s.src = "demo_jsonp.php";
  document.body.appendChild(s);
}

동적 JSONP 결과

위의 예는 여전히 매우 정적입니다.

php 파일에 JSON을 전송하여 예제를 동적으로 만들고 php 파일이 얻은 정보를 기반으로 JSON 객체를 반환하도록 합니다.

PHP 파일

<?php
header("Content-Type: application/json; charset=UTF-8");
$obj = json_decode($_GET["x"], false);

$conn = new mysqli("myServer", "myUser", "myPassword", "Northwind");
$result = $conn->query("SELECT name FROM ".$obj->$table." LIMIT ".$obj->$limit);
$outp = array();
$outp = $result->fetch_all(MYSQLI_ASSOC);

echo "myFunc(".json_encode($outp).")";
?>

PHP 파일 설명:

  • PHP 함수 json_decode() 를 사용하여 요청을 객체로 변환합니다 .
  • 데이터베이스에 액세스하고 요청된 데이터로 배열을 채웁니다.
  • 객체에 배열을 추가합니다.
  • json_encode() 함수 를 사용하여 배열을 JSON으로 변환합니다 .
  • 반환 개체 주위에 "myFunc()"를 래핑합니다.

자바스크립트 예제

"myFunc" 함수는 php 파일에서 호출됩니다:

const obj = { table: "products", limit: 10 };
let s = document.createElement("script");
s.src = "jsonp_demo_db.php?x=" + JSON.stringify(obj);
document.body.appendChild(s);

function myFunc(myObj) {
  let txt = "";
  for (let x in myObj) {
    txt += myObj[x].name + "<br>";
  }
  document.getElementById("demo").innerHTML = txt;
}

콜백 함수

서버 파일을 제어할 수 없을 때 서버 파일이 올바른 기능을 호출하도록 하려면 어떻게 해야 합니까?

때때로 서버 파일은 콜백 함수를 매개변수로 제공합니다:

예시

PHP 파일은 콜백 매개변수로 전달한 함수를 호출합니다:

let s = document.createElement("script");
s.src = "jsonp_demo_db.php?callback=myDisplayFunction";
document.body.appendChild(s);