찾다
웹 프론트엔드JS 튜토리얼access-jsonp 원칙 및 예제에 걸친 js/ajax(javascript 및 jquery 구현 코드)_javascript 기술

다행스럽게도 종말 이후에 다시 떠오르는 태양을 봤기 때문에 여기에 기사를 쓸 수 있습니다. 최근에 프로젝트를 진행하면서 기본 도메인 이름으로 기존 함수를 호출하기 위해 하위 도메인 이름을 사용해야 했던 주제로 돌아가 보겠습니다. 그래서 생각한 것이 jsonp를 사용하여 해결하는 것입니다. 평소 프로젝트에서 이러한 요구 사항을 갖고 있는 친구들이 많기 때문에 나중에 참고할 수 있도록 기록해 두었고 모두에게 도움이 되기를 바랍니다.

JSONP 프로토콜이란 무엇인가요?
JSONP는 Padding이 포함된 JSON입니다. 동일 출처 정책의 제한으로 인해 XmlHttpRequest는 현재 소스(도메인 이름, 프로토콜, 포트)에서만 리소스를 요청할 수 있습니다. 도메인 간 요청을 하려면 html의 스크립트 태그를 사용하여 도메인 간 요청을 하고 응답에서 실행할 스크립트 코드를 반환하면 JSON을 사용하여 javascript 개체를 직접 전달할 수 있습니다. 이 도메인 간 통신 방법을 JSONP라고 합니다.
분명히 JSONP는 스크립트 삽입 동작이므로 보안에 특별한 주의가 필요합니다.

Jquery의 jsonp 인스턴스
프로토콜의 클라이언트 역할과 서버 역할을 각각 맡으려면 두 페이지가 필요합니다.

클라이언트 코드:

코드 복사 코드는 다음과 같습니다.



jsonp 테스트 예<br> <script type="text/javascript" src="http://www.xxxxxxxxxxxx.cn/js/jquery.min.js"></script> <br><script type="text/ javascript "> <BR>jQuery(document).ready(function(){ <BR>$.ajax({ <BR>type: "get", <BR>async: false, <BR>url: "http: / /www.xxxxxxxxxxxx.cn/demos/jsonp.php", <BR>dataType: "jsonp", <BR>jsonp: "callback", // jsonp 콜백 함수 이름을 얻기 위해 요청 핸들러 또는 페이지에 전달됩니다. 이름(보통 기본값은 콜백) <BR>jsonpCallback: "feedBackState", // 사용자 정의된 jsonp 콜백 함수 이름, 기본값은 jQuery에서 자동으로 생성된 임의의 함수 이름입니다. <BR>success: function(data){ <BR> var $ul = $("<ul>"); <BR>$.each(data,function(i,v){ <BR>$("<li/>") . text(v["id"] " " v["name"]).appendTo($ul) <BR>}) <BR>$("#remote").append($ul) <BR> } , <BR>오류: function(){ <BR>alert('fail') <BR>} <BR>}) <BR></script> head><br>
원격 데이터는 다음과 같습니다.

;




서버 코드(이 예에서는 PHP를 사용함)
:


코드 복사
코드는 다음과 같습니다. $jsonp = $_REQUEST["callback"]
$str = '[ {"id":"1","name":"테스트 1"},{"id":"2","name":"테스트 2"}]'
$str = $jsonp " (" .$ str.")";
echo $str;
?>




Jsonp의 원리와 간단한 예
jquery는 캡슐화되어 있으므로 실제 구현 방법을 보지 못할 수도 있습니다.
클라이언트 코드:


코드 복사
코드는 다음과 같습니다.





jsonp 테스트 예







서버 코드
:


코드 복사
코드는 다음과 같습니다.



모두가 코드를 보고 어떻게 구현되는지 이해해야 한다고 생각합니다.

참고
:
1. jquery는 ajax 처리에서 매개변수를 전송하기 위해 utf-8 인코딩을 사용하므로 변환된 코딩을 저장하는 jsonp 처리 끝에서 utf-8 인코딩을 사용하는 것이 가장 좋습니다. , utf-8이 아닌 경우 변환하는 것을 잊지 마세요. 그렇지 않으면 중국어가 깨질 수 있습니다.
2. 요청한 서버 URL은 http://www.xxxxxxxxxxxx.cn/?act=add와 같이 작성하지 않는 것이 가장 좋습니다. http://www.xxxxxxxxxxxx.cn/index.php로 작성해야 합니다. ?act=add, 신청 과정에서 호환되지 않는 문제가 있습니다. 그렇습니다. 문제가 있는 친구가 있으면 게시하고 함께 토론해 보세요.
누구나 재인쇄할 수 있습니다. 독창성을 표시하고 재인쇄 시 링크를 추가해야 합니다. 그렇지 않으면...n단어는 생략됩니다.
서명: 함께 소통하고, 함께 배우고, 도움이 필요한 사람들을 돕고, 성공을 달성하세요. 함께 길.
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Nginx中404页面怎么配置及AJAX请求返回404页面Nginx中404页面怎么配置及AJAX请求返回404页面May 26, 2023 pm 09:47 PM

404页面基础配置404错误是www网站访问容易出现的错误。最常见的出错提示:404notfound。404错误页的设置对网站seo有很大的影响,而设置不当,比如直接转跳主页等,会被搜索引擎降权拔毛。404页面的目的应该是告诉用户:你所请求的页面是不存在的,同时引导用户浏览网站其他页面而不是关掉窗口离去。搜索引擎通过http状态码来识别网页的状态。当搜索引擎获得了一个错误链接时,网站应该返回404状态码,告诉搜索引擎放弃对该链接的索引。而如果返回200或302状态码,搜索引擎就会为该链接建立索引

Scrapy基于Ajax异步加载实现方法Scrapy基于Ajax异步加载实现方法Jun 22, 2023 pm 11:09 PM

Scrapy是一个开源的Python爬虫框架,它可以快速高效地从网站上获取数据。然而,很多网站采用了Ajax异步加载技术,使得Scrapy无法直接获取数据。本文将介绍基于Ajax异步加载的Scrapy实现方法。一、Ajax异步加载原理Ajax异步加载:在传统的页面加载方式中,浏览器发送请求到服务器后,必须等待服务器返回响应并将页面全部加载完毕才能进行下一步操

如何使用CakePHP中的AJAX?如何使用CakePHP中的AJAX?Jun 04, 2023 pm 08:01 PM

作为一种基于MVC模式的PHP框架,CakePHP已成为许多Web开发人员的首选。它的结构简单,易于扩展,而其中的AJAX技术更是让开发变得更加高效。在本文中,将介绍如何使用CakePHP中的AJAX。什么是AJAX?在介绍如何在CakePHP中使用AJAX之前,我们先来了解一下什么是AJAX。AJAX是“异步JavaScript和XML”的缩写,是指一种在

什么是ajax重构什么是ajax重构Jul 01, 2022 pm 05:12 PM

ajax重构指的是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更合理,提高软件的扩展性和维护性;Ajax的实现主要依赖于XMLHttpRequest对象,由于该对象的实例在处理事件完成后就会被销毁,所以在需要调用它的时候就要重新构建。

jquery ajax报错403怎么办jquery ajax报错403怎么办Nov 30, 2022 am 10:09 AM

jquery ajax报错403是因为前端和服务器的域名不同而触发了防盗链机制,其解决办法:1、打开相应的代码文件;2、通过“public CorsFilter corsFilter() {...}”方法设置允许的域即可。

Vue中如何利用JSONP实现跨域请求Vue中如何利用JSONP实现跨域请求Oct 15, 2023 pm 03:52 PM

Vue中如何利用JSONP实现跨域请求简介由于同源策略的限制,前端在进行跨域请求时会受到一定的阻碍。JSONP(JSONwithPadding)是一种跨域请求的方法,它利用&lt;script&gt;标签的特性,通过动态创建&lt;script&gt;标签来实现跨域请求,并将响应数据作为回调函数的参数传递回来。本文将详细介绍在Vue中如何利用JSONP实

php如何使用AJax和json实现登录验证php如何使用AJax和json实现登录验证Jun 19, 2023 pm 01:28 PM

php用AJax和json实现登录验证的方法是:1、创建一个jsp示例文件,导入jquery依赖和fastjson依赖文件;2、新建login.js文件,获取用户名和密码文本内容;3、新建controller类,查询用户是否存在并把对象转化为json字符串类型返回给js文件;4、js判断是否成功然后进行页面跳转即可。

什么是ajax同步异步什么是ajax同步异步Jul 04, 2022 pm 03:57 PM

ajax同步的意思是当JavaScript代码加载到当前ajax的时候会把页面里所有的代码加载停止,页面处于假死状态,当这个ajax执行完之后,页面才会接触假死状态,代码继续运行;ajax异步的意思则是当前ajax代码运行的时候其他代码一样也可以运行。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.