Heim  >  Artikel  >  Web-Frontend  >  Implementierung nativer Ajax-MIME-Typen (mit Code)

Implementierung nativer Ajax-MIME-Typen (mit Code)

php中世界最好的语言
php中世界最好的语言Original
2018-03-30 15:11:311467Durchsuche

Dieses Mal werde ich Ihnen den MIME-Typ der nativen Ajax-Implementierung (mit Code) vorstellen. Was sind die Vorsichtsmaßnahmen für die Implementierung des MIME-Typs der nativen Ajax?

Problembeschreibung

Das folgende Beispiel ist ein Ajax-Post-Request-Code. Dieser Code wird im Test ausgeführt Ich habe festgestellt, dass der zurückgegebene Statuscode 400 war, was eine Anfrage war, die der Server nicht verstehen konnte. Nachdem ich ihn überprüft und geändert hatte, stellte ich fest, dass ich den folgenden Code nur geringfügig ändern musste

Originalcode

var send = function (url, params, fn) {
  var me = this;
  var xhr = null;
  var data = '';
  fn = fn || function() {};
  params = params || {};
  for(var item in params) {
   data += item + '=' + params[item] + '&';
  }
  if(data[data.length - 1] == '&') {
   data = data.slice(0, data.length - 1);
  }
  if(window.XMLHttpRequest) {
   xhr = new XMLHttpRequest();
  }else if(window.ActiveXObject) {
   xhr= new ActiveXObject("Microsoft.XMLHTTP");
  }
  xhr.open("post", url, true);
  xhr.setRequestHeader("Content-type", "application/json");
  xhr.onreadystatechange = function () {
   if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
    fn(JSON.parse(xhr.responseText));
   }
  };
  xhr.send(JSON.stringify(params));
}

Modifizierter Code

var send = function (url, params, fn) {
    var me = this;
    var xhr = null;
    fn = fn || function() {};
    params = params || {};
    if(window.XMLHttpRequest) {
      xhr = new XMLHttpRequest();
    }else if(window.ActiveXObject) {
      xhr= new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhr.open("post", url, true);
    xhr.setRequestHeader("Content-type", "application/json");
    xhr.onreadystatechange = function () {
      if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
        fn(JSON.parse(xhr.responseText));
      }
    };
    xhr.send(JSON.stringify(params));
}

Der Unterschied zwischen diesen beiden Codeteilen ist das nach der Änderung Der Code entfernt die Verarbeitung der Daten Variable und ändert die Parameter, die in send an die Parametervariable

Fragenlösung übergeben werden

Das Problem ist gelöst, aber als ich zuvor natives Ajax verwendet habe, hatten die Parameter die Form „name=123&age=32“. Warum ist es jetzt in Ordnung, ein serialisiertes JSON-Objekt zu übergeben?

Zu diesem Zeitpunkt ist mir der von mir hinzugefügte MIME-Typ aufgefallen, bei dem ich den Inhaltstyp auf „application/json“ festgelegt habe Der zuvor häufig verwendete MIME-Typ war „application/x-www-form-urlencoded“. In diesem Fall müssen die von der Sendemethode übergebenen Parameter „name=123&age=32“ sein. ~ ̄▽ ̄)~

Ergänzung

Übrigens war der Statuscode 405, als ich ihn das letzte Mal gesehen habe, auf meinem Frontend Beim Senden einer Anfrage sind die übergebenen Parameter falsch. Als ich dieses Mal darauf stieß, lag es daran, dass der Hintergrund keine Verarbeitung für diese Anfrage hinzugefügt hat.

Ich glaube, Sie haben die Methode gemeistert, nachdem Sie den Fall gelesen haben In diesem Artikel finden Sie weitere spannende Artikel auf der chinesischen PHP-Website.

Empfohlene Lektüre:

So schreiben Sie den regulären Ausdruck, um das Format der ID-Karte und der Bankkartennummer zu bestimmen

Wie um den regulären Ausdruck von JS zu überprüfen. Positive Ganzzahl ungleich Null

Das obige ist der detaillierte Inhalt vonImplementierung nativer Ajax-MIME-Typen (mit Code). 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