이 기사는 주로 ajax 및 jsonp 사용 방법에 대한 기사를 공유하며 좋은 참고 가치가 있으며 모든 사람에게 도움이 되기를 바랍니다. 편집자를 따라가서 살펴보겠습니다.
1. Ajax
ajax에서 요청한 페이지나 리소스는 동일한 도메인의 리소스만 될 수 있으며 다른 도메인의 리소스는 허용되지 않습니다. 이는 ajax를 설계할 때 보안 고려 사항을 기반으로 합니다.
공통 매개변수:
url: 요청 네트워크 주소
type: 요청 메소드, 기본값은 GET', 일반적으로 사용되는 'POST'
dataType: 반환되는 데이터 형식을 설정합니다. 일반적으로 json 또는 html 및 jsonp를 사용합니다.
data: 서버로 전송되는 데이터를 설정합니다
.done() :요청 성공 후 콜백 함수 설정
.fail(): 요청 실패 후 콜백 함수 설정
async: 비동기 여부를 설정합니다. 기본값은 'true'로 비동기를 의미합니다
코드 적용 :
$(function () { $("input").click(function () { $.ajax({ url: "./data.json", type: "get", dataType: "json", }); .done(function(data) {//请求成功的回调函数 $("input").val(dat.name); }) .fail(function() { alert('服务器超时,请重试!'); }); }); }) ...... <body> <p> <input type="button" value="xinzhi"> </p></body>
$.get() 메소드는 GET 요청을 사용하여 서버에서 데이터를 로드하며, 새로 고치지 않고 데이터를 요청하는 ajax 메소드이기도 합니다.
매개변수:
url: 방문한 URL은 동일한 출처 정책을 따라야 합니다.
data: 서버로 전송되는 데이터입니다.
function(data,status){}: 함수가 성공적으로 실행되도록 요청합니다.
dataType: 요청 응답의 데이터 유형입니다.
//参考代码:$(function () { $("input").click(function () { $.get( "./data.json", function (data,status) { console.log(data.name); }, "json" ); }); }) ...... <body> <p> <input type="button" value="xinzhi"> </p></body>
$.get() 메소드의 매개변수는 $.ajax()와 다릅니다. URL은 필수 매개변수이고 나머지 3개는 선택사항입니다.
data는 반환된 데이터이고, status는 일반적으로 ""성공", "오류", "시간 초과" 등을 포함하여 요청 상태를 나타냅니다.
데이터 유형이 jsonp인 경우 데이터를 요청할 수도 있습니다.
요청 실패에 대한 콜백 기능 없음
$.get() 메소드는 POST 요청을 사용하여 서버에서 데이터를 로드합니다. $.get() 메소드는 정확히 동일합니다.
4.$.load():
function(response, status, xhr): 성공적인 요청에 대한 콜백 함수.
$(function () { $("input").click(function () { $(".box").load( "./data.json", function (response,status) { console.log(data.name); } ); }); }) ...... <body> <p> <input type="button" value="xinzhi"> <p class="box"></p> </p> </body>
$(function () { $("input").click(function () { $.getJSON( "./data.json", function(data,status) { console.log(data.name); }, ); }); }) ...... <body> <p> <input type="button" value="xinzhi"> </p></body>메소드는 json 데이터를 직접 얻습니다.
콜백 함수는 익명 함수가 아닌 명명된 함수입니다.
5. getScript()
메서드는 AJAX HTTP GET 요청을 사용하여 js 코드를 얻고 실행합니다.
매개변수:
$(function () { $("input").click(function () { $.getScript( "./data.js", function(data,status) { console.log(data); }, ); }); }) ...... <body> <p> <input type="button" value="xinzhi"> </p></body>
<script type="text/javascript"> function aa(data){ console.log(data.name); }</script><script type="text/javascript" src="....../data.js"></script>
aa({ "data":{ "name":"xiaohong", "age":"18" } })
将数据以页面定义的函数的参数的形式传递进去,从而获取数据。
本质上可以将数据拆分,使得数据不用强制保存在同一个域名下。
$.ajax({ url:'...../data.js',//可以不是本地域名 type:'get', dataType:'jsonp', //jsonp格式访问 jsonpCallback:'aa' //获取数据的函数}) .done(function(data){ console.log(data.name); }) .fail(function() { alert('服务器超时,请重试!'); });
data.js的内容和上面一样。
使用ajax的方法本质上也是script标签可以跨域链接资源,不过jquery为其封装了相同的方法,看起来一样。
以上代码的执行过程为:ajax通过jsonp技术跨域访问data.js文件,通过找到aa()方法将其参数传递给.done方法的data参数执行.done方法。
目前这种方式仍然有其局限性,就是必须知道data.js文件的名字和定义的方法aa,如果在仅仅知道域名的情况下,需要另外的方法.
var $input = $("input"); $input.keyup(function () { $.ajax({ url:'https://sug.so.360.cn/suggest?',//请求360搜索的联想数据 type:'get', dataType:'jsonp', //jsonp格式访问 data: {word: $input.val()}, }) .done(function(data){ console.log(data); }) .fail(function() { alert('服务器超时,请重试!'); }); }) .... <body> <input type="text"> </body>
通过浏览器查看每次输入关键字服务器发送回的数据包,找到js文件中header的地址以及相关的提交数据,发现key为word关键字,因此可以向服务器发送data数据。
服务器返回的数据会自动传给回调的匿名函数的参数data.
위 내용은 ajax와 jsonp 사용법에 대해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!