Heim > Artikel > Backend-Entwicklung > PHP---ajax übergibt den POST-Wert (einschließlich HTML-Tag) an die Übermittlungsseite und die Daten gehen verloren oder sind verstümmelt
Problem
?? Indem Sie den Inhalt im Texteditor (einen HTML-Text) abrufen und ihn dann mit Ajax per POST an den Hintergrund übergeben, speichern Sie ihn als xxx. html-Datei, aber beim Öffnen dieser Datei in einem Browser können Daten verloren gehen oder verstümmelt werden.
Grund
?? Dies liegt daran, dass der Text HTML-Tags enthält. Wenn Sie POST zum Übertragen von Werten verwenden, wirken sich einige Zeichen wie „&“ im Inhalt des Werts auf den Wert aus Variable Extraktion, was zu verstümmelten Zeichen oder Datenverlust führt.
Lösung
?? Codieren Sie den zu übergebenden HTML-Textinhalt und übergeben Sie ihn dann. Dann nutzen Sie die automatische Dekodierung des Browsers.
Kodierungsfunktion
??encodeURIComponent()-Funktion kann eine Zeichenfolge als URI-Komponente kodieren. Diese Methode kodiert weder ASCII-Buchstaben und -Zahlen noch die folgenden ASCII-Satzzeichen: - _ ~ * ’ ( ) .
Andere Zeichen (z. B. ;/?:@&= $,#, bei denen es sich um Satzzeichen zur Trennung von URI-Komponenten handelt) werden durch eine oder mehrere hexadezimale Escape-Sequenzen ersetzt. Wenn die URI-Komponente Trennzeichen wie ? und # enthält, sollten Sie die Methode encodeURIComponent() verwenden, um jede Komponente separat zu codieren. Andernfalls können Sie zum Codieren die Funktion encodeURI(URIstring) verwenden.
<code><span>var</span> content = UM.getEditor(<span>'myEditor'</span>).getAllHtml(); <span>/*对待传递的值的内容进行编码*/</span><span>var</span> htmlcontent = <span>encodeURIComponent</span>(content); alert(htmlcontent); <span>var</span> postStr = <span>'news_title='</span> + news_title +<span>'&htmlc/span> + htmlcontent + <span>'&sid='</span>+<span>Math</span>.random(); alert(postStr); ajax(<span>"../news_submit_hand.php"</span>,postStr,<span><span>function</span><span>(result)</span>{</span><span>if</span>(result == <span>'submit_success'</span>){ alert(<span>"新闻提交成功!请通过右上角的关闭按钮来关闭编辑器。"</span>); } <span>else</span> { alert(<span>"新闻提交出错!"</span>); } });</span></code>
Probleme, die nach der Codierung noch gelöst werden müssen
? Sie müssen es dem Tag hinzufügen. Zu diesem Zeitpunkt wird es nach der Codierung zu
. Es gibt Lösungen:<code><span><span>function</span><span>str_insert</span><span>(<span>$str</span>, <span>$i</span>, <span>$substr</span>)</span> {</span><span>for</span>(<span>$j</span>=<span>0</span>; <span>$j</span><<span>$i</span>; <span>$j</span>++){ <span>$startstr</span> .= <span>$str</span>[<span>$j</span>]; } <span>for</span> (<span>$j</span>; <span>$j</span><strlen(<span>$str</span>); <span>$j</span>++){ <span>$laststr</span> .= <span>$str</span>[<span>$j</span>]; } <span>$str</span> = (<span>$startstr</span> . <span>$substr</span> . <span>$laststr</span>); <span>return</span><span>$str</span>; } <span>$myfile</span> = fopen(<span>$news_path</span>, <span>"w"</span>); <span>if</span>(<span>'FALSE'</span> == <span>$myfile</span>)<span>echo</span><span>'error'</span>; <span>/*处理新闻标题等信息*/</span><span>//待插入的html代码</span><span>$insert_html</span> = <span>"<div><h3 style=\"text-align:center;\">". <span>$news_title</span> . <span>"</h3><div style=\"text-align:center;width:100%;font-size:8px;color:#A9A9A9;\"><span>发布者:admin</span> <span>发布日期:"</span>. date(<span>"Y-m-d H:i:s"</span>,<span>$timestamp</span>) .<span>"</span></div></div><hr style=\"border:1px dashed #000; height:1px\">"</span>; <span>$first_pos</span> = stripos(<span>$htmlcontent</span>, <span>"%3Cbody%20%3E"</span>); <span>$first_pos</span> += <span>13</span>; <span>$content</span> =str_insert(<span>$htmlcontent</span>,<span>$first_pos</span>,<span>$insert_html</span>); fwrite(<span>$myfile</span>, <span>$content</span>); fclose(<span>$myfile</span>);</code>
Copyright-Erklärung: Dieser Artikel ist ein [Original]-Artikel des Bloggers und darf ohne dessen Erlaubnis reproduziert werden. Bitte geben Sie die Quelle des Blogs an : [http:// blog.csdn.net/FreeApe]
Das Obige führt PHP---Ajax ein, um den POST-Wert (einschließlich HTML-Tag) an die übermittelte Seite zu übergeben. Datenverlust oder verstümmelter Inhalt, einschließlich des Inhalts, ich hoffe, dass es für Freunde hilfreich sein wird, die an PHP-Tutorials interessiert sind.