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