Heim Web-Frontend js-Tutorial Die Lösung für das Problem, dass der Ajax-Übermittlungsparameterwert HTML-Tags enthält und nicht erfolgreich übermittelt werden kann

Die Lösung für das Problem, dass der Ajax-Übermittlungsparameterwert HTML-Tags enthält und nicht erfolgreich übermittelt werden kann

May 23, 2018 am 10:19 AM
ajax html

Dieser Artikel stellt hauptsächlich die Lösung für das Problem vor, dass der Wert des Ajax-Übermittlungsparameters mit dem HTML-Tag nicht erfolgreich übermittelt werden kann. Es ist sehr gut und hat einen Referenzwert 🎜>Ich habe kürzlich als Ressource im Unternehmen gearbeitet. Bei der Artikel-Upload-Funktion ist ein kleines Problem aufgetreten.

Diese Funktion ähnelt der Verwendung eines Rich-Text-Editors zum Veröffentlichen von Informationen, verwendet jedoch Ajax zum Übermitteln von Daten, sodass der übermittelte Parameterwert zwangsläufig HTML-Tags enthält.

Es gab kein Problem, den Code lokal auszuführen, und die Übermittlung kann immer erfolgreich sein. Wenn der Code jedoch online bereitgestellt wird, konnte ich mich lange nicht täuschen lassen Es hat lange gedauert, bis ich das Problem gefunden habe.

Der Grund, warum die Übermittlung nicht erfolgreich war, liegt darin, dass meine Übermittlungsdaten HTML-Tags enthalten und meine Zieladresse nicht direkt angefordert werden kann.

Dann lautet die Lösung wie folgt: 1. Verwenden Sie die JS Base64-Kodierung (ähnlich der Verschlüsselung) auf der Seite mit dem Parameterwert von das HTML-Tag.

2. Nachdem Sie die Daten an der Zieladresse erhalten haben, verwenden Sie die Base64-Dekodierungsmethode im Hintergrund, um die erhaltenen Daten zu dekodieren.

Das Folgende ist der Base64-Codierungs- und Decodierungsmethodencode meines JS:

//下面是64个基本的编码
 var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 var base64DecodeChars = new Array(
   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
   52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
   -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
   15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
   -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
   41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
 //编码的方法
 function base64encode(str) {
     var out, i, len;
    var c1, c2, c3;
     len = str.length;
    i = 0;
    out = "";
    while(i < len) {
       c1 = str.charCodeAt(i++) & 0xff;
       if(i == len)
       {
             out += base64EncodeChars.charAt(c1 >> 2);
             out += base64EncodeChars.charAt((c1 & 0x3) << 4);
           out += "==";
            break;
          }
      c2 = str.charCodeAt(i++);
       if(i == len)
         {
           out += base64EncodeChars.charAt(c1 >> 2);
            out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
             out += base64EncodeChars.charAt((c2 & 0xF) << 2);
             out += "=";
            break;
          }
       c3 = str.charCodeAt(i++);
       out += base64EncodeChars.charAt(c1 >> 2);
      out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
       out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));
       out += base64EncodeChars.charAt(c3 & 0x3F);
       }
     return out;
   }
 //解码的方法
 function base64decode(str) {
     var c1, c2, c3, c4;
    var i, len, out;
     len = str.length;
     i = 0;
  out = "";
     while(i < len) {
      do {
          c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
        } while(i < len && c1 == -1);
       if(c1 == -1)
         break;
      do {
          c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
        } while(i < len && c2 == -1);
       if(c2 == -1)
          break;
      out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
      do {
          c3 = str.charCodeAt(i++) & 0xff;
          if(c3 == 61)
            return out;
          c3 = base64DecodeChars[c3];
        } while(i < len && c3 == -1);
       if(c3 == -1)
          break;
       out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));
     do {
          c4 = str.charCodeAt(i++) & 0xff;
           if(c4 == 61)
            return out;
          c4 = base64DecodeChars[c4];
         } while(i < len && c4 == -1);
      if(c4 == -1)
          break;
       out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
      }
     return out;
   }
 function utf16to8(str) {
     var out, i, len, c;
     out = "";
    len = str.length;
    for(i = 0; i < len; i++) {
      c = str.charCodeAt(i);
      if ((c >= 0x0001) && (c <= 0x007F)) {
          out += str.charAt(i);
        } else if (c > 0x07FF) {
           out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
            out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
           out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
         } else {
            out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
             out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
          }
       }
    return out;
   }
 function utf8to16(str) {
   var out, i, len, c;
    var char2, char3;
    out = "";
    len = str.length;
   i = 0;
    while(i < len) {
     c = str.charCodeAt(i++);
    switch(c >> 4)
       { 
      case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
          // 0xxxxxxx
          out += str.charAt(i-1);
          break;
         case 12: case 13:
          // 110x xxxx  10xx xxxx
          char2 = str.charCodeAt(i++);
         out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
         break;
        case 14:
         // 1110 xxxx 10xx xxxx 10xx xxxx
         char2 = str.charCodeAt(i++);
          char3 = str.charCodeAt(i++);
           out += String.fromCharCode(((c & 0x0F) << 12) |
                  ((char2 & 0x3F) << 6) |
                  ((char3 & 0x3F) << 0));
          break;
        }
       }
    return out;
  }
Nach dem Login kopieren

Die Seite ruft die JS-Methode auf, um den Base64-Codierungscode wie folgt auszuführen:

 var articleContent = editor.getContent();
   articleContent = base64encode(utf16to8(articleContent));
Nach dem Login kopieren

Aber, Ich bin auf ein weiteres neues Problem gestoßen, nachdem ich JS zum Base64-Kodieren der Daten verwendet hatte. JS hat tatsächlich das Pluszeichen (+) durch ein Leerzeichen ersetzt, was dazu führte, dass die von meiner Hintergrundmethode dekodierten Daten falsch waren.

Die Lösung lautet wie folgt: Ich habe zuerst die JS-Methode replace() zum Ersetzen verwendet, aber es ist ein Fehler aufgetreten habe gerade mein erstes A-Leerzeichen durch ein Pluszeichen (+) ersetzt. Die endgültige Lösung ist wie folgt.

Ersetzen Sie im Hintergrund (unter der Zielempfangsadresse) die Leerzeichen durch das Pluszeichen (+) für die erhaltenen Daten. Der Code lautet wie folgt:

string content = Request["content"].ToString();
      if (content.Contains(""))
        {
          content=content.Replace(" ", "+");
        }
      //byte[] sa = Convert.FromBase64String(content);
      //Encoding Ansi = Encoding.GetEncoding("GB2312");
      // content = Ansi.GetString(sa);
      content = Base64Decrypt(content);//Base64解码
Nach dem Login kopieren

Wenn die BASE64-Codierungs- und Decodierungsmethode im Hintergrund nicht unten angezeigt wird:

/// <summary>
    /// Base64加密
    /// </summary>
    /// <param name="input">需要加密的字符串</param>
    /// <returns></returns>
    public static string Base64Encrypt(string input)
    {
      return Base64Encrypt(input, new UTF8Encoding());
    }
    /// <summary>
    /// Base64加密
    /// </summary>
    /// <param name="input">需要加密的字符串</param>
    /// <param name="encode">字符编码</param>
    /// <returns></returns>
    public static string Base64Encrypt(string input, Encoding encode)
    {
      return Convert.ToBase64String(encode.GetBytes(input));
    }
    /// <summary>
    /// Base64解密
    /// </summary>
    /// <param name="input">需要解密的字符串</param>
    /// <returns></returns>
    public static string Base64Decrypt(string input)
    {
      return Base64Decrypt(input, new UTF8Encoding());
    }
    /// <summary>
    /// Base64解密
    /// </summary>
    /// <param name="input">需要解密的字符串</param>
    /// <param name="encode">字符的编码</param>
    /// <returns></returns>
    public static string Base64Decrypt(string input, Encoding encode)
    {
      return encode.GetString(Convert.FromBase64String(input));
    }
Nach dem Login kopieren
Ich werde es für alle organisieren und hoffe, dass es hilfreich ist alle in der Zukunft.

Verwandte Artikel:

Ajax-Beitragsanfrage-Sprungseite

Die Ajax-Einreichungsformularseite wird schnell aktualisiert

Zwei Lösungen dafür, dass Ajax ein neues Fenster öffnet und vom Browser blockiert wird

Das obige ist der detaillierte Inhalt vonDie Lösung für das Problem, dass der Ajax-Übermittlungsparameterwert HTML-Tags enthält und nicht erfolgreich übermittelt werden kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

Anleitung zum Tabellenrahmen in HTML. Hier besprechen wir verschiedene Möglichkeiten zum Definieren von Tabellenrändern anhand von Beispielen für den Tabellenrand in HTML.

Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

Dies ist eine Anleitung für verschachtelte Tabellen in HTML. Hier diskutieren wir anhand der entsprechenden Beispiele, wie man eine Tabelle innerhalb der Tabelle erstellt.

HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

Anleitung zum HTML-Rand links. Hier besprechen wir einen kurzen Überblick über HTML margin-left und seine Beispiele sowie seine Code-Implementierung.

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

Anleitung zum Verschieben von Text in HTML. Hier besprechen wir eine Einführung, wie Marquee-Tags funktionieren, mit Syntax und Beispielen für die Implementierung.

HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

Leitfaden zur HTML-geordneten Liste. Hier besprechen wir auch die Einführung von HTML-geordneten Listen und Typen sowie deren Beispiele

HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

Anleitung zum HTML-OnClick-Button. Hier diskutieren wir deren Einführung, Funktionsweise, Beispiele und Onclick-Events in verschiedenen Veranstaltungen.

See all articles