Heim > Web-Frontend > js-Tutorial > Hauptteil

Praktische Zusammenfassung von Ajax und JSONP in Projekten

php中世界最好的语言
Freigeben: 2018-03-30 17:43:54
Original
1614 Leute haben es durchsucht

Dieses Mal werde ich Ihnen eine praktische Zusammenfassung von Ajax und JSONP im Projekt geben. Was sind die Vorsichtsmaßnahmen bei der Verwendung von Ajax und JSONP?

Vorwort: Ajax und JSONP können mit dem Hintergrund kommunizieren, um Daten und Informationen abzurufen, müssen jedoch nicht die gesamte Seite aktualisieren, um eine teilweise Aktualisierung der Seite zu erreichen.

1. Ajax

•Definition: Eine Technologie, die HTTP-Anfragen für asynchrone Kommunikation mit dem Hintergrund sendet.

•Prinzip: Instanziieren Sie das xmlhttp-Objekt und verwenden Sie dieses Objekt, um mit dem Hintergrund zu kommunizieren.

Die Same-Origin-Richtlinie von Ajax:

•Die von Ajax angeforderten Seiten oder Ressourcen können nur Ressourcen unter derselben Domäne sein, keine Ressourcen aus anderen Domänen. Dies basiert auf der Berücksichtigung der Sicherheit bei der Gestaltung von Ajax .

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

Ajax-Methode:

1. $.ajax({}):

•Allgemeine Parameter: •URL: Netzwerkadresse anfordern
•Typ : Anforderungsmethode, Standard Es ist 'GET', häufig verwendet 'POST'
•dataType: Legen Sie das zurückgegebene Datenformat fest, verwenden Sie im Allgemeinen JSON, es kann auch HTML und JSONP sein;
•Data: Legen Sie die gesendeten Daten fest an den Server
•.done (): Setzt die Rückruffunktion nach einer erfolgreichen Anfrage
•.fail(): Setzt die Callback-Funktion nach einer fehlgeschlagenen Anfrage
•async: Set ob es asynchron ist, was bedeutet: Asynchron

• Codeanwendung:

$(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>
Nach dem Login kopieren

Beschreibung: Daten stellen die vom Hintergrund zurückgegebenen Daten dar; muss von der Serverumgebung abhängen.

2. $.get():

•$.get()-Methode verwendet eine GET-Anfrage, um Daten vom Server zu laden; Daten ohne Aktualisierung der Ajax-Methode.

•Parameter:
•URL: Die besuchte URL, die der Same-Origin-Richtlinie folgen muss;
•Daten: Die an den Server gesendeten Daten.
•function(data,status){}: Fordern Sie die Funktion an, erfolgreich ausgeführt zu werden.
•dataType: Fordern Sie den Datentyp der Antwort an.

//参考代码:
$(function () {
  $("input").click(function () {
    $.get(
      "./data.json",
      function (data,status) {
        console.log(data.name);
      },
      "json"
    );
  });
})
......
<body>
  <p>
    <input type="button" value="xinzhi">
  </p>
</body>
Nach dem Login kopieren

•Die Parameter der $.get()-Methode unterscheiden sich von denen von $.ajax(). Die URL ist ein erforderlicher Parameter und die anderen drei sind optional.
•Daten sind die zurückgegebenen Daten, der Status gibt den Status der Anfrage an, im Allgemeinen einschließlich „Erfolg“, „Fehler“, „Zeitüberschreitung“ usw.
•Wenn der Datentyp JSONP ist, können Sie auch Daten anfordern Domänenübergreifend.
•Keine Rückruffunktion für Anforderungsfehler

3. $.post()

•Die Methode $.get() verwendet eine POST-Anfrage zum Laden vom Server.
•Die verwendete Methode ist genau die gleiche wie die Methode $.get()

4 🎜>•Daten vom Server laden, es ist nicht erforderlich, den Datentyp anzugeben, die zurückgegebenen Daten werden automatisch im Element platziert:

•URL: Adresse; data: Angeforderte Parameter, optional;

•function(response,status,xhr): Callback-Funktion für erfolgreiche Anfrage

•Die zurückgegebenen Daten werden in p platziert; Domänenübergreifend ist kein Zugriff möglich.
•Antwort ist der Status der Anfrage. 4. getJSON()

$(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>
Nach dem Login kopieren
•Die Methode verwendet AJAX.

•Parameter:
•URL: Anforderungs-URL, erforderliche Parameter;
•Funktion (Daten, Status, xhr): Rückruffunktion für erfolgreiche Anfrage

•Die Methode ruft JSON-Daten direkt ab;•Keine Rückruffunktion, die einen Fehler zurückgibt;

•Benannte Funktion beim Rückruf der Funktion, keine anonyme Funktion;


5.Methode verwendet AJAX HTTP GET-Anfrage, um JS-Code abzurufen und auszuführen.

•Parameter:
$(function () {
  $("input").click(function () {
    $.getJSON(
      "./data.json",
      function(data,status) {
        console.log(data.name);
      },
    );
  });
})
......
<body>
  <p>
    <input type="button" value="xinzhi">
  </p>
</body>
Nach dem Login kopieren

•URL: Anfrage-URL, erforderliche Parameter;•Funktion(Daten,Status): Rückruffunktion für erfolgreiche Anfrage

•Rückgabeergebnisdaten sind JS-Code.

• Diese Methode kann zum dynamischen Laden von JS-Code verwendet werden 🎜>.

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

用法一:函数传参

<script type="text/javascript">
  function aa(data){
    console.log(data.name);
  }
</script>
<script type="text/javascript" src="....../data.js"></script>
Nach dem Login kopieren

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

data.js的内容:

aa({
  
  "data":{
    "name":"xiaohong",
    "age":"18"
  }
})
Nach dem Login kopieren

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

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

用法二:利用ajax

$.ajax({
  url:'...../data.js',//可以不是本地域名 
  type:'get',
  dataType:'jsonp', //jsonp格式访问
  jsonpCallback:'aa' //获取数据的函数
})
.done(function(data){
  console.log(data.name);
})
.fail(function() {
  alert('服务器超时,请重试!');
});
Nach dem Login kopieren

•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>
Nach dem Login kopieren

•通过浏览器查看每次输入关键字服务器发送回的数据包,找到js文件中header的地址以及相关的提交数据,发现key为word关键字,因此可以向服务器发送data数据。
•服务器返回的数据会自动传给回调的匿名函数的参数data.

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

推荐阅读:

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

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

Das obige ist der detaillierte Inhalt vonPraktische Zusammenfassung von Ajax und JSONP in Projekten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!