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

PHP---ajax übergibt den POST-Wert (einschließlich HTML-Tag) an die Übermittlungsseite und die Daten gehen verloren oder sind verstümmelt

WBOY
WBOYOriginal
2016-07-29 09:15:171807Durchsuche

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:
??Teilen Sie zuerst die ursprüngliche Zeichenfolge von der angegebenen Position bis zur Zeichenfolge in zwei Zeichenfolgen auf und fügen Sie dann die erste Hälfte der geteilten Zeichenfolge in die zweite Hälfte der Zeichenfolge ein, um eine neue Zeichenfolge zu bilden ist implementiert;
??Code-Implementierung:
<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.

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