프로젝트의 Ajax 및 jsonp에 대한 실제 요약

php中世界最好的语言
풀어 주다: 2018-03-30 17:43:54
원래의
1614명이 탐색했습니다.

이번에는 프로젝트에서 Ajax와 jsonp에 대한 실제적인 요약을 가져오겠습니다. Ajax와 jsonp를 사용할 때 주의사항은 무엇인가요?

머리말: ajax와 jsonp는 백그라운드와 통신하여 데이터와 정보를 얻을 수 있지만 페이지를 부분적으로 새로 고치기 위해 전체 페이지를 새로 고칠 필요는 없습니다.

1. ajax

•정의: 백그라운드와의 비동기 통신을 위해 http 요청을 보내는 기술입니다.

•원리: xmlhttp 개체를 인스턴스화하고 이 개체를 사용하여 배경과 통신합니다.

Ajax의 동일 출처 정책:

•Ajax에서 요청한 페이지나 리소스는 동일한 도메인에 속한 리소스만 될 수 있으며, 다른 도메인의 리소스는 될 수 없습니다. 이는 Ajax를 설계할 때 보안 고려 사항을 기반으로 합니다.

-------------------------------------- --------------------------------

ajax 메소드:

1. ):

•공통 매개변수: •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>
로그인 후 복사

설명: 데이터는 Ajax 사용이 서버 환경에 따라 달라지는 백그라운드에서 반환되는 데이터를 나타냅니다. .

2. $.get():

•$.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개는 선택사항입니다.
•데이터는 반환된 데이터이고, 상태는 일반적으로 ""성공", "오류", "시간 초과" 등을 포함하여 요청 상태를 나타냅니다.
•데이터 유형이 jsonp인 경우 도메인 전체에 걸쳐 데이터를 요청할 수도 있습니다.
• 요청 실패 시 없음 콜백 기능

3.$.post()

•$.get() 메소드는 POST 요청을 사용하여 서버에서 데이터를 로드합니다.
•사용된 메소드는 $와 동일합니다. .get() 메서드.

4. $.load():

• 서버에서 데이터를 로드합니다. 데이터 유형을 지정할 필요가 없으며 반환된 데이터는 자동으로 요소에 배치됩니다.
• 매개변수:

• URL: 주소;
•데이터: 요청 매개변수, 선택 사항
•기능(응답, 상태, 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>
로그인 후 복사

•반환된 데이터는 p에 배치됩니다.
•도메인 전체에 걸쳐 데이터에 액세스할 수 없습니다. ;
•응답이 반환됩니다.
•요청 실패에 대한 콜백 함수가 없습니다.

•JSON 데이터를 얻기 위해 AJAX HTTP GET 요청을 사용합니다. • 매개변수: •url: 요청. URL, 필수 매개변수

•data: 서버로 전송되는 데이터

•function(data, status, xhr): 성공적인 요청을 위한 콜백 함수

$(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()

•이 메서드는 js를 획득하고 실행합니다. •매개변수:

• url: 요청 URL, 필수 매개변수

•function(data, status): 성공적인 요청에 대한 콜백 함수

$(function () {
  $("input").click(function () {
    $.getScript(
      "./data.js",
      function(data,status) {
        console.log(data);
      },
    );
  });
})
......
<body>
  <p>
    <input type="button" value="xinzhi">
  </p>
</body>
로그인 후 복사

• 반환 결과 데이터는 js 코드입니다. js 코드

2, jsonp

를 동적으로 로드하는 데 사용할 수 있습니다.

•定义:一种可以实现跨域发送http请求的数据通信格式,可以嵌在ajax中使用。
•原理:利用script标签可以跨域链接资源的特性。

用法一:函数传参

<script type="text/javascript">
  function aa(data){
    console.log(data.name);
  }
</script>
<script type="text/javascript" src="....../data.js"></script>
로그인 후 복사

说明:在外部定义一个data.js文件,这个文件的路径可以与当前页面不在同一个域下面。

data.js的内容:

aa({
  
  "data":{
    "name":"xiaohong",
    "age":"18"
  }
})
로그인 후 복사

•将数据以页面定义的函数的参数的形式传递进去,从而获取数据。

•本质上可以将数据拆分,使得数据不用强制保存在同一个域名下。

用法二:利用ajax

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

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

ajax和jsonp跨域详解(附代码)

ajax用$.post方式进行用户名校验

위 내용은 프로젝트의 Ajax 및 jsonp에 대한 실제 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!