Heim  >  Artikel  >  Web-Frontend  >  Beispiele für die sekundäre Kapselung der JQuery-Ajax-Methode (grafisches Tutorial)

Beispiele für die sekundäre Kapselung der JQuery-Ajax-Methode (grafisches Tutorial)

亚连
亚连Original
2018-05-22 10:32:391024Durchsuche

Der vollständige Name von Ajax ist Asynchronous JavaScript and XML. Der Artikel führt Sie im Detail durch Beispielcode ein sehen.

Vorwort

Der vollständige Name von Ajax ist Asynchronous JavaScript and XML Asynchronous JavaScript and XML

AJax beinhaltet Erhaltene Technologie:

1. Verwenden Sie CSS und XHTML zum Ausdrucken.

2. Verwenden Sie das DOM-Modell für Interaktion und dynamische Anzeige.

3. Verwenden Sie XMLHttpRequest, um asynchron mit dem Server zu kommunizieren. (Kern)

4. Verwenden Sie Javascript zum Binden und Aufrufen.

Wenn unser Front-End Daten verarbeitet, ist es unvermeidlich, mit dem Backend über das XMLHttpRequest-Objekt zu kommunizieren. Ajax kapselt die $.ajax-Methode für die Kommunikation basierend auf dem XMLHttpRequest-Objekt. Die $.ajax-Methode Sehr praktisch und sehr einfach anzuwenden. Diese zweite Kapselung von Abfrage-Ajax bezieht sich auf Express, um Middleware zum Verarbeiten von Daten hinzuzufügen, Promise-Objekte (Defferd) zurückzugeben, Rückrufe zu reduzieren und Ajax präziser und eleganter zu schreiben.

$.ajax({
 url: url,
 data: data,
 dataType: 'json',
 type: 'get',
 success: new Function(){},
 error: new Function(){},
 .......
})

Meistens müssen wir nur die URL und die Daten übergeben, um die gewünschten Daten zu erhalten.

Pain Points

Aber wenn $.ajax in einem Projekt verwendet wird, gibt es immer noch einige Pain Points

Das ist im Grunde so alles was es jetzt ist Die vom Ajax des Projekts zurückgegebenen Daten werden ebenfalls zweimal gekapselt und die Informationen der Geschäftslogik für die Hintergrundverarbeitung werden hinzugefügt.

hat sich von der Rückgabe von Daten zu {code: 200, data:{}, err_msg:''}

geändert. Wenn jede Ajax-Anfrage zurückkommt, um festzustellen, ob der Code korrekt ist, und dann eine Geschäftslogikverarbeitung oder eine Fehlererinnerung durchzuführen, wird dies auch für das gesamte Projekt der Fall sein überflüssig. ,

$.ajax({
 url: url,
 data: data,
 success: function(data){
 if(data.code == 200) {
  dosomething()
 } else {
 alert(data.err_msg);
 }
 }
})

Um dieses Problem zu lösen, verwenden wir eine Funktion, um $.ajax erneut zu kapseln und die Geschäftslogik oder Fehlererinnerung zu extrahieren, um zu beurteilen, ob sie korrekt ist oder nicht, und machen sie zu einem öffentlichen Teil .

util.ajax = function(obj, successFn){
 $.ajax({
 url: obj.url || '/interface',
 data: obj.data || {},
 dataType: obj.dataType || 'json',
 type: obj.type || 'get',
 success: function(data){
  if (data.code != 200) {
  alert(data.err_msg);
  } else {
  successFn(data.data)
  }
 },
 error: function(err){
  alert(err)
 }
 })
}

Versprechen

Verwenden Sie util.ajax anstelle von $.ajax, um Geschäftsfehler zu reduzieren. Lassen Sie es uns noch einmal verbessern, anstatt Rückrufe zu verwenden, verwenden Sie Versprechen zum Aufrufen, um Rückrufe zu reduzieren und den Code klarer zu machen.

util.ajax = function(obj) {
 var deferred = $.Deferred();
 $.ajax({
  url: obj.url || '/interface',
  data: obj.data || {},
  dataType: obj.dataType || 'json',
  type: obj.type || 'get',
 }).success(function (data) {
  if (data.code != 200) {
   deferred.reject(data.err_msg);
  } else {
   deferred.resolve(data.data)
  }
 }).error(function (err) {
  deferred.reject('接口出错,请重试');
 })
 return deferred.fail(function (err) {
  alert(err)
 });
}


// 调用
var obj = {
 url: '/interface',
 data: {
  interface_name: 'name',
  interface_params: JSON.stringify({})
 }
};
util.ajax(obj)
 .done(function(data){
  dosomething(data)
 })

Middleware

Dies ist eine gängige Methode, aber manchmal müssen wir uns mit Differenzierung befassen. Wir beziehen uns auf Express, um eine Middleware-Software einzuführen um das Differenzierungsproblem zu lösen.

util.ajax = function(obj, middleware) {
 var deferred = $.Deferred();
 $.ajax({
  url: obj.url || '/interface',
  data: obj.data || {},
  dataType: obj.dataType || 'json',
  type: obj.type || 'get',
 }).success(function (data) {
  if (data.code != 200) {
   deferred.reject(data.err_msg);
  } else {
   deferred.resolve(data.data)
  }
 }).error(function (err) {
  deferred.reject('接口出错,请重试');
 })

 // 添加中间件
 if(!middleware) {
  middleware = function(){};
 }
 return deferred.done(middleware).fail(function (err) {
  message({
   content: err,
   type: 'error',
   showLeftIcon: true,
   duration: 5000
  });
 });
}

// 调用
// 调用
var obj = {
 url: '/interface',
 data: {
  interface_name: 'name',
  interface_params: JSON.stringify({})
 }
};
var middleware = function(data) {
 data.forEach(function(item){
  item.fullName = item.firstName + item.lastName
 })
}
util.ajax(obj, middleware)
 .done(function(data){
  console.log(data.fullName)
 })

Ich habe das Obige für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.

Verwandte Artikel:

ajaxPerfekte Lösung für domänenübergreifende Probleme

Detaillierte Analyse der Verwendung von Ajax in JS-Tipps

JQuery ruft Ajax auf, um Bilder zu laden

Das obige ist der detaillierte Inhalt vonBeispiele für die sekundäre Kapselung der JQuery-Ajax-Methode (grafisches Tutorial). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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